javascript - Redux reducer 获取字符串而不是对象

标签 javascript reactjs redux

我正在尝试使用 redux 更新我的状态,但由于某种原因,reducer 只获取字符串而不是对象。

// action    
const switchTab = (activeTab) => { return { type: SWITCH_TAB, activeTab } }

//reducer
const appUIManagement = (state = initialState, action) => {
switch(action.type) {
    case SWITCH_TAB: 
        return Object.assign({}, state, {activeTab: action.activeTab});
    default:
        return state;
}
}

假设我的初始状态是

{activeTab: 'lines'}

现在当我调度一个 Action 时:

{ type:SWITCH_TAB, { activeTab: 'favorites' } },

我的 reducer 的状态参数只是“行”而不是整个对象,因此我的响应看起来像

{
  activeTab: {
    '0': 'l',
    '1': 'i',
    '2': 'n',
    '3': 'e',
    '4': 's',
    activeTab: 'favorites'
  }
}

我做错了什么或者我对 redux 没有了解什么? 谢谢

最佳答案

您正在将字符串 action.activeTab 传递到 Object.assign

const state = {};
const action = { type: 'SWITCH_TAB', activeTab: 'lines' };
const newState = Object.assign({}, state, action.activeTab);
console.log(newState);

但是,Object.assign 需要对象作为其参数,因此您应该传递整个操作,或者更好的是您需要的操作部分:

const state = {};
const action = { type: 'SWITCH_TAB', activeTab: 'lines' };
const newState = Object.assign({}, state, { activeTab: action.activeTab })
console.log(newState);

关于javascript - Redux reducer 获取字符串而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135382/

相关文章:

reactjs - 为什么我的 context.router 在我的 React 组件中未定义?

javascript - Action 创建者中的错误检查

redux - 处理 Redux Store 数据中的依赖关系

javascript - 在 Backbone.history 中读取以前的 URL

javascript - 使用 JSON 制作 XmlHttpRequest POST

javascript - ReactJS 通过 onClick 函数传递 key

javascript - 带有 Next.js 的 Firebase Analytics - 未定义窗口

javascript - 按下按钮时更改 LaTeX

javascript - 尝试使用数组制作包含视频和图像的幻灯片,但图片不会显示

javascript - 在单页应用中,在服务器上进行排序和过滤是标准的吗?