【发布时间】:2021-09-22 17:51:15
【问题描述】:
假设我的状态看起来像这样(取自https://redux.js.org/usage/structuring-reducers/normalizing-state-shape):
{
posts : {
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
},
"post2" : {
id : "post2",
author : "user2",
body : "......",
comments : ["comment3", "comment4", "comment5"]
}
},
allIds : ["post1", "post2"]
},
comments : {
byId : {
"comment1" : {
id : "comment1",
author : "user1",
comment : ".....",
},
"comment2" : {
id : "comment2",
author : "user2",
comment : ".....",
}
},
allIds : ["comment1", "comment2"]
},
users : {
byId : {
"user1" : {
username : "user1",
name : "User 1",
},
"user2" : {
username : "user2",
name : "User 2",
}
},
allIds : ["user1", "user2"]
}
}
因此,我使用 Redux-Toolkit 的 createSlice 创建了 3 个切片:postsSlice、cmetsSlice、usersSlice。
这很简单。
但现在我想在状态中添加另一层来跟踪博客,所以上面的整个结构需要为每个博客嵌套和重复:
{
blogs: {
byId: {
"blog1": {
posts: {...},
comments: {...},
users: {...}
},
"blog2": {
posts: {...},
comments: {...},
users: {...}
},
},
allIds: ["blog1", "blog2"]
}
}
现在我需要使用createSlice 创建一个新切片,blogsSlice。但是对于这个切片中的每个博客项目,我需要一个由其他 3 个切片组成的子状态。
如何组合切片/reducer 以实际创建此结构?我应该如何定义传递给createSlice 的初始状态和reducer 函数以使这个结构工作?
【问题讨论】:
标签: redux redux-toolkit state-management