我正在尝试使用 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/