关于Redux,State范式化管理如何理解?

最近学习了state范式化管理,打算重构自己个人博客的留言板模块。

以前留言板模块的状态是这样的, 每个留言有多个评论,每个评论有多个回复。

{
    msgs:[
        {
            commenter:{ ... },
            comments:[
                {
                    replier:{ ... }
                },
                ...
            ]
        },
        ...
    ]
}

state范式化之后

{    msgs:{ byId:{},allIds:[] },    comments:{ byId:{},allIds:[] },    replies:{ byId:{},allIds:[] },    users:{ byId:{},allIds:[] }
}

看到这个结构思考了很久,UI上还是只能留言/评论/回复嵌套起来,然后我就非常疑惑,我该如何创建容器组件?
如果我创建一个MessageList(留言列表)的容器组件,那它需要监听state中的 msgs/comments/replies/users的变化,而且我需要在MessageList中直接解析数据,传递给其子组件,CommentList(评论列表的UI组件)等等,这样就失去了范式化state的优势:传递ID代替传递数据。
UI结构如下,最外层的是Message(单个留言),蓝色的是评论列表,粉色的是回复列表。
https://img.mukewang.com/5c8ca9980001d7a508000529.jpg

我不知道我描述清楚我的问题了没,但是真的被卡住写不下去了。。求大神解救。。简单地说,就是我想知道这样的情况下,如何将state范式化用好?


ibeautiful
浏览 882回答 2
2回答

胡子哥哥

State 范式化
打开App,查看更多内容
随时随地看视频慕课网APP