Redux Reducer获取字符串而不是对象

时间:2018-11-03 20:46:12

标签: javascript reactjs redux

我正在尝试使用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是什么意思? 谢谢

1 个答案:

答案 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);