在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各位可自行百度比較一下
碼字不易,如果對各位有幫助的話,希望點贊收藏,歡迎各位大手評論