react-router点击返回上一页,如何不让上一个页面重新加载?

发布于 2022-09-06 12:41:58 字数 744 浏览 10 评论 0

大致代码如下(ps:使用的react-router4):

A页面传参给B页面

this.props.history.push({
    pathname:'/B',
    state:{
        param1:'Hello'
    }
})

B页面接收参数:

this.props.location.state.param1 //Hello

但是!!!!-->>如果从B页面C页面,在C页面点击返回B页面时,A传给B的参数就会获取不到导致报错。

目前的解决方案是把参数存到localStorage里,但个人觉得这是规避问题 并没有解决问题,如果B页面是一个复杂的表单页,从C返回到B时,表单数据就全不见了。。。如果把这些数据全放到localStorage,多恶心啊?。

我也尝试通过组件的生命周期来阻止表单update,但很遗憾行不通...

这里没辙了,求救各位大神,来帮帮忙。。。

总结下问题就是:点击返回时,如何让上一个页面不更新

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑红尘 2022-09-13 12:41:58

如果需要保存状态, 首先应该考虑的不是阻止组件更新来保留组件内state, 建议将参数保存到单独的状态树中(如Redux)或者放在父组件中。

唯憾梦倾城 2022-09-13 12:41:58

其实我觉得楼上说的用redux存储参数是一个很好的办法,但是redux如果不结合redux-persist,或者不把状态存起来,刷新后状态还是会丢失,本质上还是存储到本地。其实你可以只把A到B的参数到localStorage里,每次进入B页面,获取这个参数,然后重新请求数据,无论是A进入B还是C进入B,都重新请求。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文