大致代码如下(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,但很遗憾行不通...
这里没辙了,求救各位大神,来帮帮忙。。。
总结下问题就是:点击返回时,如何让上一个页面不更新?
如果需要保存状态, 首先应该考虑的不是阻止组件更新来保留组件内
state
, 建议将参数保存到单独的状态树中(如Redux)或者放在父组件中。