【问题标题】:Is it possible to reassign the whole state in a slice reducer (using Redux ToolKit)?是否可以在切片缩减器中重新分配整个状态(使用 Redux ToolKit)?
【发布时间】:2021-06-06 12:17:00
【问题描述】:

我正在使用 Redux Toolkit 的 createSlice()。 并尝试创建一个 reducer,将来自外部源的数据填充到 redux 状态。 我正在尝试通过在动作有效负载中传入一个对象来更新整个状态:

.
    reducers: {
        populateData: (state, action) => {
            state = action.payload
        }
.

但它只有在我为每个对象键创建一个 reducer 时才有效。 有没有办法一次性做到这一切?

【问题讨论】:

  • 如果我理解正确,您想更新 整个 状态而不仅仅是切片?我认为您不能使用切片缩减器来做到这一点,因为它只能控制分配给它的切片。不过,您可以使用根减速器来做到这一点。

标签: redux react-redux redux-toolkit


【解决方案1】:

这是一个常见的误解,实际上我昨天刚刚写了一个新的"Writing Reducers with Immer" docs page 来回答这个问题。引用:

一个常见的错误是尝试分配state = someValue directly。这行不通!这仅将局部状态变量指向不同的引用。这既不会改变内存中现有的状态对象/数组,也不会返回一个全新的值,因此 Immer 不会进行任何实际更改。

相反,您需要:return action.payload,它将完全替换现有状态。

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 2020-10-08
    • 2023-01-20
    • 2023-04-01
    • 2022-06-22
    • 2021-10-08
    • 1970-01-01
    • 2020-12-14
    • 2021-05-24
    相关资源
    最近更新 更多