【问题标题】:Persisting redux state vs dynamic urls持久化 redux 状态与动态 url
【发布时间】:2020-12-25 20:01:26
【问题描述】:
在我正在开发的应用程序中,我有一个用户在下拉列表中选择的状态。我希望用户刷新页面后这种状态仍然是相同的
两种选择:
- 通过添加“/:state”将状态存储在url中
- 我们必须再次访问 api 端点才能根据状态获取数据。所以它总是新鲜的
- 网址可以存储在历史记录中并复制/添加书签
- 每次用户更改状态时,url 都会更改,从而导致页面重新加载
- 将状态存储在 redux 中并持久化
- 必须安装像 redux-persist 这样需要一些配置的包
- 数据在页面重新加载时保持不变,因此我们不需要另一个 api 调用
- 数据可能已过时,需要重新拉取
哪个选项更好?哪些情况会破坏这两种选择?
【问题讨论】:
标签:
reactjs
web
url
redux
【解决方案1】:
每次用户更改状态时,url都会更改导致页面重新加载
如果您使用 react-router 之类的内容,则每次更改 url 时应用都不会重新加载。
决定在哪里存储一些设置取决于具体情况。我通常更喜欢在 url 中仅存储与导航相关的内容:更改视图/页面、打开的模式、搜索/过滤器。通常,当您希望此 url 可与其他用户共享时,您希望将其存储在 url 中。因此,如果您想在 url 中放置一些下拉值,请考虑:您是否希望浏览器导航更改此值?此下拉菜单是否会改变某些视图?
此外,有时您必须将此选择存储在后端。通常当它是某个实体的属性或设置时。您必须考虑是否希望在不同设备上的多个会话之间共享此下拉列表的值。