gpt4 book ai didi

javascript - 在 redux 中更新多个值

转载 作者:行者123 更新时间:2023-11-29 20:52:20 26 4
gpt4 key购买 nike

我正在尝试更新 redux 中的嵌套对象,但我不太确定我是否做对了。下面提供的代码无法编译,因为 reducer 中存在语法错误。

我知道这不是正确的语法,因为 action.payload 之前没有键,但我不知道如何将 action.payload 合并到 [action.id]。

我试图避免为我需要更新的每个 key 创建单独的操作(例如 updateBlockTypeupdateBlockTitleupdateBlockDescription 等。 )

调度:

this.props.dispatch(updateBlock(this.props.id, { type: e.currentTarget.id }))

Action :

export function updateBlock (id, values) {
return {
type: 'UPDATE_BLOCK',
id: id,
payload: values
}
}

reducer :

case 'UPDATE_BLOCK':
return {
...state,
blocks: {
...state.blocks,
byHash: {
...state.blocks.byHash,
[action.id]: {
...state.blocks.byHash[action.id],
action.payload <-- How do I merge the payload?
}
}
}
}

byHash[id] 对象:

'1': { id: 1, type: 'INTRO', title: 'Some title...', description: 'Some description...' }

我构建 reducer 的方式可能是错误的,所以我愿意考虑我应该如何解决这个问题。

最佳答案

您错过了传播运算符:...action.payload 它将作为对象的有效负载的属性传播到 reducer 中的对象条目

如果结构变得更复杂,最好将 reducer 组合成子 reducer,然后将它们与来自 redux 的 combineReducers api 合并。

您还访问了 reducer 中的 state.blocksstate.blocks.hash。如果初始状态未定义这些键,这可能会引发错误。这是编写复杂 reducer 的另一个原因。

关于javascript - 在 redux 中更新多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51273195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com