Redux/React-Redux - 在减速器中使用 "state = XXX"

Redux/React-Redux - using "state = XXX" in the reducer

我们使用 Redux.js 和 React.js (React-Redux),在 reducer 中我们使用以下代码(我们使用 redux-actions 来减少样板文件):

const update = require('react/lib/update');
const myReducer = handleActions
({
     [myAction]: (state, action) => {
         state = update(state, {
             something: {$set: !state.someProperty}
         });
         return someFunction(state);
     }
})

我们使用 React Immutability Helpers 中的 update,但使用 state = 将结果分配到状态。

这是否违反 basic Redux guidlines - 即改变状态?看起来是这样,但代码似乎完美且快速地运行,redux devtools 正确显示状态更改...

您的示例 没问题,因为您实际上并没有改变 state 变量指向的对象的内容。相反,您只是将名为 state 的局部变量更新为指向不同的对象。

了解变量和引用在 Javascript 中的工作方式很重要,这将有助于弄清这里发生的事情。

就我个人而言,为了清楚起见,我建议 const newState = update(....)