好像全部的單頁面應用都會有個問題,就是我A做爲一級界面,跳轉到二級界面B的時候,在回到A界面,你會發現全部的參數都從新加載了redux
不少時候假如咱們的界面有不少條新聞列表,經過設置參數篩選出了一部分的新聞列表,這個時候我點擊新聞標題進入了新聞詳情,而後返回this
到A界面的時候,發現全部的條件都重置了,這樣用戶體驗很顯然是很是很差的。spa
我仍是個小菜鳥因此對於那種大佬們說可使用redux能夠實現的方法不是很明白,因此我就介紹下另一種方法code
在跳轉到B界面的時候,把你想要保留的數據啊參數啊,傳遞給B界面,在B界面裏面使用localStorage進行保存,而後回到A界面的時候,能夠判斷下localStorage是否是存在,存在直接使用該數據該參數,不然就按原有的來。component
A界面blog
componentDidMount() { backTop(); let localTemp = JSON.parse(localStorage.getItem('hotTemp')); if (localTemp === undefined || localTemp === null) { //這邊是判斷是否是從B回來的,若是不是,就初始化請求 let params = { page: 1, size: 20 } this.getHotEvent(params); } else { //若是是從B回來的,那麼就把條件啊,數據啊,直接給state進行顯示就能夠了 this.setState({ pageNum: localTemp.pageNum, hotEvent:localTemp.hotEvent, success:localTemp.success, total:localTemp.total }) if (localTemp.sflag) { //我這邊是作了個是否是填寫了篩選條件的判斷 若是填寫了篩選條件回到A界面的時候,這些篩選條件要顯示出來 this.setState({ defaultInput: localTemp.defaultInput, startTime: localTemp.startTime, endTime: localTemp.endTime, }) //this.getIeahotsSearch(localTemp.searchParam); } else { //這邊是沒有任何篩選條件,只要數據顯示就能夠了 //this.getHotEvent(localTemp.params); } } } <Link className="recall left transition3" to={{ pathname: "/B", state: {eventArray: item, localState: this.state}, //這邊是我想要保留的數據,經過state傳給B }} >{item.title}</Link>
B界面get
componentDidMount() { /*保存A界面列表的參數*/ if(this.props.location.state.localState!==undefined&&this.props.location.state.localState!==null){ localStorage.setItem("hotTemp", JSON.stringify(this.props.location.state.localState)); //console.log(localStorage.getItem('hotTemp')); } }
這樣就能夠了string
注:必定要在其餘的界面清除這個localStorageit