在reducer中更改状态期间更新特定索引的对象值

时间:2018-01-31 18:13:28

标签: javascript arrays object redux reducers

我有一组对象,它们具有以下结构:

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

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

2 个答案:

答案 0 :(得分:1)

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

<select asp-for="ProductTypeId" asp-items="@Model.ProductTypes.Select(x => new SelectListItem() { Text = x.Name, Value = x.Id.ToString() }).ToList()" />

答案 1 :(得分:0)

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