【发布时间】:2020-06-17 14:57:34
【问题描述】:
我的reducer 中有一个initialState,它有点嵌套。我试图在调度动作/状态更改时向我的状态添加一个新属性“isTouched”。
const initialState = {
isLoading: false,
events: [
{ year:2021 , place: [{id:1,name:"BD"}] },
{ year: 2020, place: [{id:2,name:"AMS"}] },
],
};
在我的减速器中:
case types.TOGGLE_PLACE_INFO:
return {
...state,
here need to write the logic if events.place.id === action.payload then add a new property to
"place" like this: place: [id:1,name:"BD",isTouched:true]
}
所以在那之后我的状态将如下所示:
const initialState = {
isLoading: false,
events: [
{ year:2021 , place: [{id:1,name:"BD", isTouched:true}] },
{ year: 2020, place: [{id:2,name:"AMS"}] },
],
};
沙盒链接:https://codesandbox.io/s/holy-tdd-v3gbd?file=/src/reducers/commonReducer.js 因此,当单击 setTouched 按钮时,它应该更新位置并添加 isTouched: true
有没有人知道如何实现这个逻辑。任何帮助将不胜感激。在此先感谢。
【问题讨论】:
-
这不是一个有效的JS语法
[id:1,name:"BD", isTouched:true],请修复它。此外,您是否需要将isTouched添加到具有有效负载 ID 的所有个位置? -
当某些项目与基本上是 Id 的 action.payload 匹配时,我需要 isTouched,所以,在这种情况下: events.place.id === action.payload when action.payload = == 1 然后 isTouched 将被添加到第一个项目
-
@DennisVash,你试过了吗?
标签: reactjs redux react-redux