我正在尝试使用redux更新状态,但是由于某种原因,reduce只能获取字符串而不是对象。
// 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'}
现在,当我调度动作时:
{ type:SWITCH_TAB, { activeTab: 'favorites' } },
我的reducer的状态参数只是'lines'而不是整个对象,因此我的响应看起来像
{
activeTab: {
'0': 'l',
'1': 'i',
'2': 'n',
'3': 'e',
'4': 's',
activeTab: 'favorites'
}
}
我做错了什么,或者我没有了解redux是什么意思? 谢谢
答案 0 :(得分:2)
您正在将字符串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);