2016-12-16 3 views
1

у меня есть эта ошибка с Аксиос, штраф нагрузки JSON, но проблема с рендерошибка TypeError: Не удается преобразовать неопределенными или нуль объекта

enter image description here

actions.js:

export const getUser = (callback)=>{ 
    return function(dispatch){ 
     dispatch({type: 'FETCH_GET_USER_REQUEST'}); 
     axios.get('https://jsonplaceholder.typicode.com/users') 
     .then((response)=>{ 
      dispatch({type:'FETCH_GET_USER_SUCCES', payload:response.data}); 
      if (typeof callback === 'function') { 
       callback(null, response.data) 
      } 
     }) 
    } 
} 

reducerUser.js

export const getUserReducer = (state=[], action) =>{ 
    switch(action.type){ 
     case 'FETCH_GET_USER_REQUEST': 
      return state; 
     case 'FETCH_GET_USER_FAILURE': 
      return state; 
     case 'FETCH_GET_USER_SUCCES': 
      return [...action.payload.data]; 
     default: 
      return state; 
    } 
} 

container.jsx

class GetUserContainer extends Component{ 
    componentDidMount(){ 
     this.props.getUser(); 
    } 
    render(){ 
     return(
      <GetUserComponent allUser={this.props.allUser} /> 
     ) 
    } 
} 
function mapStateToProps(store){ 
     return{ 
      allUser:store.allUser 
     } 
} 
function matchDispatchToProps(dispatch){ 
    return bindActionCreators({ 
     getUser:getUser 
    }, dispatch) 
} 

store.js

const store = createStore(
reducers, 
    applyMiddleware(thunk, logger()) 
); 
+0

Возможно, 'return [... action.payload];' вместо 'return [... action.payload.data];'? –

+0

@ ಠ_ಠ да, у вас есть право, спасибо –

ответ

2

Глядя на вашей консоли вывода вашей, ваш вопрос, скорее всего, в вашем редукторе, когда FETCH_GET_USER_SUCCES действие удара.

Вы возвращаете это: [...action.payload.data];. Попробуйте зарегистрировать свою полезную нагрузку, не может быть объект данных на полезной нагрузке, следовательно, преобразование неопределенной или нулевой ошибки объекта. Я готов держать пари, вам просто нужно вернуть: [...action.payload];

0

Из стека ошибок вы можете увидеть ошибки вызывается из getUserReducer в вашем коде, а затем в _toConsumableArray который вспомогательный метод, созданный Бабелем, когда transpiling распространения оператора ES5.

Как @ ಠ_ಠ сказал намек, вы получите ошибку, потому что action.payload.data не является объектом, и в этом случае применение оператора спреда не удастся. ([...action.payload.data])

Смежные вопросы

 Смежные вопросы