我正在使用Redux Toolkit的createSlice()
。并试图创建一个reducer,它将来自外部源的数据填充到redux状态中。我试图通过在action有效负载中传递一个对象来更新整个状态:
.
reducers: {
populateData: (state, action) => {
state = action.payload
}
.
但是只有我为每个对象关键点创建一个缩减器,它才能工作。2有没有一种方法可以同时完成这一切呢?
2条答案
按热度按时间vohkndzv1#
这是一个常见的误解,实际上我昨天刚刚写了一个新的"Writing Reducers with Immer" docs page来回答这个问题。
一个常见的错误是尝试赋值
state = someValue directly
。这是行不通的!这只是将本地状态变量指向一个不同的引用。这既不是改变内存中现有的状态对象/数组,也不是返回一个全新的值,所以Immer没有做任何实际的更改。相反,您希望:
return action.payload
,它将完全替换现有状态。4zcjmb1e2#
我碰到了这个问题
这不起作用
这确实有效