Redux-处于规范化状态的异步逻辑



在Redux中发现了很多关于规范化状态的信息,但在连接到后端端点时仍然不清楚流。

如果有人愿意回复这篇很长的帖子,我真的很感激。请分享你关于如何处理规范化状态的异步逻辑的知识或参考资料。

让我们以官方文档中的Normalized state为例:(为便于阅读而缩短的版本(

{
posts : {
byId : {
"post1" : {
id : "post1",
author : "user1",
body : "......",
comments : ["comment1", "comment2"]
}
},
allIds : ["post1"]
},
comments : {
byId : {
"comment1" : {
id : "comment1",
author : "user2",
comment : ".....",
},
"comment2" : {
id : "comment2",
author : "user3",
comment : ".....",
}
},
allIds : ["comment1", "comment2", "comment3", "comment4", "comment5"]
},
users : {
byId : {
"user1" : {
username : "user1",
name : "User 1",
}
},
allIds : ["user1"]
}

}

问题:

  1. 这是否意味着我必须从服务器获取ALL现有评论,然后才能从redux状态查询所需的评论

在显示特定帖子时,我是否应该只使用ID数组(post.ecomments(从服务器获取所需的评论?在这种情况下,我会用从服务器获得的评论实体替换所有评论实体吗?

  1. 此示例结构何时适用?它仍然被认为是标准化的吗?在这里我将如何处理异步逻辑?

    entities: {
    authors : { byId : {}, allIds : [] },
    books : { byId : {}, allIds : [] },
    authorBook : {
    byId : {
    1 : {
    id : 1,
    authorId : 5,
    bookId : 22
    },
    2 : {
    id : 2,
    authorId : 5,
    bookId : 15,
    },
    3 : {
    id : 3,
    authorId : 42,
    bookId : 12
    }
    },
    allIds : [1, 2, 3]
    }
    

关于该主题的有用答案:

有关主题的有用文档:异步逻辑,规范化状态,更新规范化状态

Hiya:("归一化的";不是的意思吗;我首先从服务器获取了每一个可能的值";。这只是意味着提取的条目存储在由项ID键控的查找表中。你可以获取一些帖子和他们的评论,将它们加载到那些标准化的查找表中,获取更多并添加它们,等等。(事实上,这就是为什么Redux Toolkit的createEntityAdapterAPI提供了更新功能,可以将更多项添加/插入/更新到现有的标准化查找表中。(

因此,一种可能的使用场景可能是:

  • 获取一页的帖子,插入到规范化的帖子状态
  • 用户打开一篇帖子,获取该帖子的评论并插入到规范化的评论状态
  • 根据需要重复这些步骤

最新更新