首页 文章

使用react路由器而不会失去“setState”状态?

提问于
浏览
0

我有一个React应用程序,可以让用户完成各个步骤 . 我希望能够使用浏览器的“后退”按钮返回上一步 . 现在我正在考虑使用react-router来做到这一点 .

目前,我只是对事件做出反应并在我的顶级组件上调用setState .

我的问题:所有州都必须反映在URL中,还是保存到本地存储中?或者我可以保留组件的 state 并且只是让react-router在顶级组件上更改一些 props ?当我这样做时,我是否有冒险丢失组件的 state (例如,因为React不识别旧组件和新组件)?

我想拥有像 /step1/step2 ......这样的简单网址 . 这些并不反映应用程序中发生的所有事情 . 具体来说,我不会在主要组件的短暂 state 中声明状态 . 换句话说,我的应用程序的状态不是路由的纯函数 .

我想主要使用react-router来使后退按钮充当一个美化的撤消/转到最后一步按钮,其次只是导航到其他组件 . 任何想法或小片段显示如何做到这一点?或者反应路由器不适合这个吗?

1 回答

  • 0

    当React从一个组件层次结构导航到另一个组件层次结构(例如react-router链接/历史记录导航)时,它只卸载新组件层次结构中不存在的组件 . 状态仅在未安装的组件中丢失 . 如果你的状态被妥善存储在最高级别,只能通过重新渲染而不是重新安装,你应该保留它 .

相关问题