報錯信息如下:
首先,這個報錯的意思是說:在路由快速切換時,數據還沒有拿回來,頁面就已經銷毀了,而當數據拿回來了去執行this.setState()時,找不到組件而報錯。
清楚問題后,解決的辦法有兩個:
第一種:在生命周期UNSAFE_componentWillMount里面取消所有該頁面尚未完成的請求:
var xhr = new XMLHttpRequest(); xhr.abort();
第二種:使用react組件this里面的updater屬性上的isMounted方法判斷組件是否存在,如果不存在,就return,不再去設置setState。
if (this.updater.isMounted(this)) { this.setState({ dashBoardDate: otherDashBoardDate }) } else { return }