我寫了一個通用的input組件,有獲取驗證碼還有倒計時的功能。倒計時的時間是存在組件的store里面的。現(xiàn)在的情況是,當(dāng)我在A頁面倒計時了,hashHistory.push()跳轉(zhuǎn)到B頁面,其中B頁面也有到計時組件,此時B頁面就顯示的是正在倒計時。最佳的效果是,跳轉(zhuǎn)到B頁面時,沒有開始倒計時。但是刷新頁面之后就沒問題了。想知道以什么方法來達到這個效果。目前我想到的是,在組件componentDidMount的時候重置store,就是寫一個action,在action里面把所以observable的數(shù)據(jù)都手動重置一下。想問問大神們,還有其他的方法嗎?下面是我的代碼:組件代碼: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里面,當(dāng)?shù)诙芜M入A頁面的時候,上次上傳的圖片還存在。我在想有沒有什么一勞永逸的方法,不用在每個頁面里面去重置store。17-12-16經(jīng)過幾天的思考實踐,總結(jié)出,如果只是少部分的數(shù)據(jù)需要重置的話,就在componentWillUnmount中調(diào)action手動重置(componentDidMount中重置會影響性能)。如果是大量數(shù)據(jù)需要重置,還是在store中分頁面存儲數(shù)據(jù)比較好。
react + mobx中store的值不能初始化,只能通過刷新界面來重置嗎?
牛魔王的故事
2019-05-22 16:29:17