最近学习了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(单个留言),蓝色的是评论列表,粉色的是回复列表。
我不知道我描述清楚我的问题了没,但是真的被卡住写不下去了。。求大神解救。。简单地说,就是我想知道这样的情况下,如何将state范式化用好?
胡子哥哥