最近使用react redux react-router做一个项目,遇到以下情况,首次进入A页面,后点链接进B页面,后再进C页面,A跟C页面相似,故共用同一个state,在进入C时,A原有的数据被覆盖,这时,如果用户执行返回操作,如何实现A那个页面的数据回滚?(首次离开A页面时,它的数据有部分通过ajax新加的,再次访问时若直接刷新A,则新数据与旧数据间会有差异)
最近使用react redux react-router做一个项目,遇到以下情况,首次进入A页面,后点链接进B页面,后再进C页面,A跟C页面相似,故共用同一个state,在进入C时,A原有的数据被覆盖,这时,如果用户执行返回操作,如何实现A那个页面的数据回滚?(首次离开A页面时,它的数据有部分通过ajax新加的,再次访问时若直接刷新A,则新数据与旧数据间会有差异)
我想到两个方法:
1,Redux store 上相应的 state 改成用 WeakMap 或类似对象,数据与页面地址对应缓存;
2,可以抛弃 Redux,直接使用 React Router 或 History 的 pushState 存储 state object,用浏览器原生方法管理数据和页面地址对应关系。
4 回答1.6k 阅读
2 回答1k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答932 阅读✓ 已解决
1 回答663 阅读✓ 已解决
2 回答821 阅读✓ 已解决
2 回答976 阅读
A跟C页面相似,故共用同一个component ?
在进入C时,A原有的数据被覆盖这是不对的,离开A时,A就被销毁了.
"首次离开A页面时,它的数据有部分通过ajax新加的,再次访问时若直接刷新A,则新数据与旧数据间会有差异, " 因为react显示是数据驱动的, 所有东西都是从数据开始, 如果新旧数据有差异而不希望显示有差异, 可以通过在render方法里面加条件判断. 如果希望保留用户的一些习惯, 可以存在cookie里.