gpt4 book ai didi

reactjs - 更新 React Redux reducer 中的数组对象

转载 作者:行者123 更新时间:2023-12-03 13:18:30 24 4
gpt4 key购买 nike

这应该很简单,但我没有找到我想要的简单答案。我有一个 reducer :

const posts = (state = null, action) => {
switch(action.type){
case "PUBLISH_POST":
return state;
case "UNPUBLISH_POST":
return state;
default:
return postList;
}
}

我有一个带有 ID状态 的帖子列表。我正在发送我的帖子 ID,但无法弄清楚简单地将已单击项目的 status 从 0 更新为 1 的逻辑。我发现了很多半解决方案,但它们看起来都冗长且丑陋 - 在这种情况下实现它的最短/最好的方法是什么?

示例数据:

{
id:1,
user:"Bob Smith",
content:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vulputate mauris vitae diam euismod convallis. Donec dui est, suscipit at dui vitae, sagittis efficitur turpis. ",
status:1
}

最佳答案

假设您的操作类似于:

{
type: 'UNPUBLISH_POST',
payload: {
id: 1,
user: 'Bob Smith',
content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vulputate mauris vitae diam euismod convallis. Donec dui est, suscipit at dui vitae, sagittis efficitur turpis. ',
status: 1
}
}

只需使用 spread operator对于它:

const posts = (state = null, action) => {
switch(action.type){
case "PUBLISH_POST":
case "UNPUBLISH_POST":
const index = this.state.findIndex(post => post.id === action.payload.id)

return [
...state.slice(0, index), // everything before current post
{
...state[index],
status: action.type === 'PUBLISH_POST' ? 1 : 0,
},
...state.slice(index + 1), // everything after current post
]
default:
return postList;
}
}

关于reactjs - 更新 React Redux reducer 中的数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46790746/

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