【问题标题】:update the value of an object for a specific index during an state change in a reducer在 reducer 中的状态更改期间更新特定索引的对象的值
【发布时间】:2023-03-14 13:45:01
【问题描述】:

我有一个对象数组,其结构如下:

const obj = Object.assign({}, state.stuff.data);

obj 的值是:

[
abc-123:{x: "1", y: "2", value: "", latency: ""},
efg-345:{x: "1", y: "2", value: "", latency: ""},
hij-678:{x: "1", y: "2", value: "", latency: ""},
klm-919:{x: "1", y: "2", value: "", latency: ""}
]

在某个动作/状态更改时,我需要为latency 更新obj[abc-123] 的值

我尝试使用对象,分配,但这一直给我错误:

    A state mutation was detected inside a dispatch, in the path: 
`stuff.data.abc-123.latency`. Take a look at the reducer(s) handling the action

解决此问题的最佳方法是什么?

【问题讨论】:

    标签: javascript arrays object redux reducers


    【解决方案1】:

    您可以在对象中使用扩展语法并添加新属性。

    const state = {
      'abc-123':{x: "1", y: "2", value: "", latency: ""},
      'efg-345':{x: "1", y: "2", value: "", latency: ""},
      'hij-678':{x: "1", y: "2", value: "", latency: ""},
      'klm-919':{x: "1", y: "2", value: "", latency: ""}
    }
    
    const newState = {
      ...state,
      'abc-123': {
        ...state['abc-123'],
        latency: 1
      }
    }
    
    console.log(newState)

    【讨论】:

      【解决方案2】:

      react-addons-update 有助于解决这类问题。它负责复制先前状态的其余部分,您可以使用点运算符更新所需的数据点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-07
        • 1970-01-01
        • 2019-05-17
        • 2016-12-24
        • 1970-01-01
        • 2020-10-12
        • 2019-05-07
        • 2023-01-28
        相关资源
        最近更新 更多