首页 > 解决方案 > reducer 中的状态被初始化为嵌套对象

问题描述

状态设置为嵌套对象 {profile: {profile: {}} 而不是 {profile: {}}。然后商店也有这个嵌套对象。

const profile = {
    nickname: '',
    avatar: '',
};

export default (state = {profile}, action) => {
      switch (action.type) {
        case 'GET_PROFILE':
        return  {
          ...state,
          profile: action.payload
        };

        default:
            return state;

  }
}

标签: react-redux

解决方案


正如您在评论中提到的 action.payload 将是 {profile: {...}}。

这就是你想要做的profile: {profile: {...}}

因此,您可以做的一件事就是profile: action.payload.profile它应该可以解决您的问题。

或者在调度操作 GET_PROFILE 时,您可以发送 {the ... =nickname: 'Dany', avatar: 'somepath.jpg'} 作为数据而不是 {people: {the ... =nickname: 'Dany', avatar: 'somepath.jpg'}}。所以这样你就可以将action.payload保留在 reducer 中。


推荐阅读