我有一个React应用程序,可以让用户完成各个步骤。我希望能够使用浏览器的“后退”按钮返回上一步。现在我正在考虑使用react-router来做到这一点。
目前,我只是对事件做出反应并在我的顶级组件上调用setState。
我的问题:所有州都必须反映在网址中,还是保存到本地存储中?或者我可以保留组件的state
,只需让react-router在顶级组件上更改一些props
吗?当我这样做时,我是否有可能失去组件的state
(例如,因为React不识别旧组件和新组件)?
我希望拥有简单的网址,例如/step1
,/step2
....这些不会反映应用中发生的所有事情。具体来说,我不需要或希望能够直接输入这样的URL。还有隐私问题。我很高兴在主要组件的短暂state
中拥有应用程序的状态。换句话说,我的应用程序的状态不是路由的纯函数。
我想主要使用react-router来使后退按钮充当一个美化的撤消/转到最后一步按钮,其次只是导航到其他组件。任何想法或小片段显示如何做到这一点?或者反应路由器不适合这个吗?
答案 0 :(得分:0)
当React从一个组件层次结构导航到另一个组件层次结构(例如react-router链接/历史记录导航)时,它只卸载新组件层次结构中不存在的组件。状态仅在未安装的组件中丢失。如果你的状态被妥善存储在最高级别,只能通过重新渲染而不是重新安装,你应该保留它。