【发布时间】:2019-11-19 07:52:07
【问题描述】:
有一个案例让我很困惑。
我有一个对象 redux 状态:{ show: true, creative: {name: 'a', tags: [t1, t2, t3] } }。该对象已通过“react-redux”的“连接”功能映射到道具。
当我更改属性“show”或“creative.name”时,它会触发重新渲染。但是如果我将 t0 附加到“creative.tags”,它不会运行重新渲染。
# reducer.js
# block code does not re-render ===========
state.creative.tags.push(t0)
return state
# end block code does not re-render =======
我必须通过分配一个新变量来解决问题。
# reducer.js
# block code does re-render ===========
let new_state = Object.assign({}, state);
new_state.creative.dsp_tags.push(action.payload);
return new_state
# end block code does re-render =======
能否请您告诉我 reactJS 如何识别更改的状态?
【问题讨论】:
-
Reducer 永远不应该改变状态,而是返回一个新的状态对象,所以你正在做的作为你的解决方法是正确的。请参阅此处了解更多信息:redux.js.org/recipes/structuring-reducers/…
-
谢谢,@djskinner。答案对我很有帮助
标签: reactjs react-redux