如何解决如何在 Redux Store 中存储一个实体?
我的 Redux Store 使用的是 Normalizing State Shape
,它看起来像这样:
entities: {
users: {
list: [],// <-- list of all my users
loading: false,lastFetch: null,},}
如果有人直接在用户的详细信息页面上打开网站,我应该怎么做。例如:{WEBSITE_URL}/users/1
。 Redux Store 是空的,我只需要请求一个实体。我应该:
-
获取整个列表,将其放入商店并选择一个请求的实体?
-
仅获取用户#1,将其放入商店用户列表(
entities.users.list
),将lastFetch
设置为空(这是因为如果有人接下来将重定向到列表,他将再次获取新列表。显然之前的列表没有所有用户),并显示列表中的 #1 用户。 -
仅获取用户 #1,将其放在 Store 中的单独位置。例如在
selected
的users
字段中:entities: { users: { list: [],loading: false,selected: null // <--- HERE },}
您认为最好的解决方案是什么?我需要 selected
字段吗?所有教程和课程都没有提到这个场景,只提到了如何获取列表的场景。
解决方法
我也有同样的困境。
我的方法总是 — 3. 我正在创建选择/单一状态来加载数据和一个额外的 action
(例如 clearSelectedUser、clearSelectedPost)从组件上的存储中清除数据卸载。
我也在使用 Redux Saga 来获取数据(执行异步操作),这作为组合使用效果很好。我真的很喜欢拥有整洁的组件而没有异步调用的想法。
但是,我也发现可以接受在这种特殊情况下使用组件状态(带有 useState
钩子)并直接从组件中获取数据(没有 Redux Saga 或商店) (实体单页/屏幕)。
选项 1. 如果您从 API 获取分页数据,则该选项将不起作用。你只会把事情复杂化。
选项2。我同意你的看法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。