为了账号安全,请及时绑定邮箱和手机立即绑定

react + mobx中store的值不能初始化,只能通过刷新界面来重置吗?

react + mobx中store的值不能初始化,只能通过刷新界面来重置吗?

牛魔王的故事 2019-05-22 16:29:17
我写了一个通用的input组件,有获取验证码还有倒计时的功能。倒计时的时间是存在组件的store里面的。现在的情况是,当我在A页面倒计时了,hashHistory.push()跳转到B页面,其中B页面也有到计时组件,此时B页面就显示的是正在倒计时。最佳的效果是,跳转到B页面时,没有开始倒计时。但是刷新页面之后就没问题了。想知道以什么方法来达到这个效果。目前我想到的是,在组件componentDidMount的时候重置store,就是写一个action,在action里面把所以observable的数据都手动重置一下。想问问大神们,还有其他的方法吗?下面是我的代码:组件代码:classInputStore{@observablesendSuccess=false;@observableleftTime=60;......}//倒计时@actioncountDown=()=>{letcount=setInterval(()=>{if(this.leftTime===1){clearInterval(count);runInAction(()=>{this.leftTime=60;this.sendSuccess=false;});}runInAction(()=>{this.leftTime=this.leftTime-1});},1000);}A页面代码:hashHistory.push("/Login");A、B页面都只是引用这个公用组件其实不只是公用组件会有这样的问题,同一个页面进入两次也会有这样的问题。比如在A页面上传一张图片,将url保存在了store里面,当第二次进入A页面的时候,上次上传的图片还存在。我在想有没有什么一劳永逸的方法,不用在每个页面里面去重置store。17-12-16经过几天的思考实践,总结出,如果只是少部分的数据需要重置的话,就在componentWillUnmount中调action手动重置(componentDidMount中重置会影响性能)。如果是大量数据需要重置,还是在store中分页面存储数据比较好。
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

export的应该是class,而不是实例化后的store,在constructor里this.store=newInputStore(),这样每次载入组件都会初始化mobx。
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 2050 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信