我目前正在使用React钩子和上下文构建一个Webapp。我目前有一个流程工作,该流程使用化简器在isLightTheme
和true
之间切换false
的全局状态。一切正常,一切都会相应更新/。
现在,我正在尝试添加第二个流程,该流程具有一个object
。在化简器中,可以看到object
已被更新为新值。每当我在return
函数末尾尝试state
新的reducer
时,都不会更新。
objects
的所有reducer
是否都相同?所以它不会更新,因为value
还是一样吗?有解决方法吗?
我的减速器,其中state
是一个object
,我正在用新值进行更改。
export const startOfDayReducer = (state, action) => {
switch (action.type) {
case 'UPDATE_CASH_DRAWER_COUNT':
const { cashDrawers } = state;
state.cashDrawers = cashDrawers;
return state;
default:
return state;
}
}
答案 0 :(得分:2)
您正在从reducer返回相同状态,创建状态副本并更新值并返回它。
export const startOfDayReducer = (state, action) => {
switch (action.type) {
case 'UPDATE_CASH_DRAWER_COUNT':
const { cashDrawers } = action; // assuming you are getting updated cashDrawers from action
return { ...state, cashDrawers }; // create new copy of state and return it.
default:
return state;
}
}
答案 1 :(得分:0)
与useReducer一起使用时,一个好的经验法则是“永不改变参数”,而总的来说是“永不改变状态”。
尝试返回一个新对象: '返回{...状态,CashDrawers}'
如果您不能使用对象散布运算符,则等效: '返回Object.assign({},状态,{cashDrawers})'