1 回答

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
乍一看,一切似乎都很好。
你Object.assign在 reducer 中可能是導(dǎo)致嵌套foo對象的原因,因為 Redux 原則中的一個是不可變的,所以你應(yīng)該總是返回一個新狀態(tài),相反,你直接改變state.
您可以再添加一個第一個參數(shù),以創(chuàng)建一個新對象,該對象將具有新的 foo 的狀態(tài)屬性:
export default (state = {}, action) => Object.assign({}, state, {
foo: action.payload !== "SET_FOO" ? state.foo : action.payload
});
一個更好的方法,你會經(jīng)??吹剑?/p>
export default (state = {}, { type, payload }) => {
switch (type) {
case 'SET_FOO': {
return { ...state, payload }
}
default: {
return state
}
}
}
在最后一個示例中,您可以清楚地看到我正在返回一個新對象,其中包含狀態(tài)所具有的所有屬性以及新的有效負(fù)載。
祝你好運(yùn)!
添加回答
舉報