【问题标题】:Mixing immutable and mutable structures inside the state在状态内部混合不可变和可变结构
【发布时间】:2017-01-10 13:50:50
【问题描述】:

我有一些非常大的要求,我不想让它全部不可变并保存到状态,因为它很慢。我想在某处将其设置为普通的 JS 可变对象,并在动作创建者内部对其进行处理,只调度一小部分并使它们不可变。

我应该将这些可变数据保存在哪里?一直在想状态,但是reducer应该长什么样子呢?:

case GET_ALL:
    return state.merge({
        data: action.response
    })

现在我的 reducer 只包含纯函数,其中包含自动创建不可变对象的合并。

【问题讨论】:

  • 我无法理解你的论点,什么是更新状态或渲染状态缓慢?您当前使用的是普通的 JS 对象还是一些不变性库?你当前的状态对象有多大?
  • 更新状态很慢,更具体地说 - 合并操作(将 JSON 深度转换为不可变)。
  • 尝试用console.time() and console.timeEnd()测量合并函数的执行时间。避免存储所有结果数据也是一个好主意,只取需要的数据。

标签: reactjs redux immutable.js


【解决方案1】:

在处理可变或不可变数据时,您只需确保在状态更改时返回 new 状态 (newState !== state)。

return { ...state, data: action.response}

如何存储数据并不重要。

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 2018-11-06
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    相关资源
    最近更新 更多