關於react路由傳參跳轉後刷新頁面參數消失

在antd項目的開發中使用的路由是react-Router的路由,在使用是經常出現刷新當前頁面後參數消失導致顯示錯誤的問題:

解決辦法:

1.最開始我的解決辦法是將參數放在search參數先,然後通過截取地址欄來獲取。(不推薦)

<Link to={{pathname:'url',search:'參數1',query:{'參數2'}}}></Link>
// 接收頁面
const data=this.props.location.search
const param=data.param.substr(1,data.param.length);//地址欄截取

但是這樣的方法其實是不推薦的,首先seach參數傳遞已經是react-Router不推薦的用法了,其次如果用戶將你的地址欄參數刪了刷新頁面,那也許是個災難

2.通過state傳遞,然後配合sessionStorage存儲在瀏覽器中,頁面銷燬後,數據刪除

const {dispatch,location}=this.props;

let recvParam;

if(location.state&&location.state.params){//判斷當前有參數
    recvParam=location.state.params;
    sessionStorage.setItem('data',recvParam);// 存入到sessionStorage中
}else{
    recvParam=sessionStorage.getItem('data');// 當state沒有參數時,取sessionStorage中的參數
}
this.setState({
    recvParam
})

關於sessionStorage的用去以及爲何不用localStorage各位可自行百度比較一下

碼字不易,如果對各位有幫助的話,希望點贊收藏,歡迎各位大手評論

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章