マウントされていないコンポーネントでsetState(またはforceUpdate)を呼び出せない-Reactメモリリークの問題処理



Cant Call Setstate



最近、開発プロセス中にエラーが発生しました



一般的な意味:すでにアンロードされているコンポーネントでsetStateを使用して状態を変更することはできません。これにより、アプリケーションでメモリリークが発生します。

回避策:componentWillUNmountフェーズですべての非同期タスク(例:SetState操作)をキャンセルします。



カスタマイザーがreactコンポーネントに設定されているか、イベントがDOMにバインドされている場合、コンポーネントがアンロードされたときにタイマーがクリアされないか、イベントがクリアされないか、アンロードされたコンポーネントにsetStateが設定され、結果としてメモリーリーク。フック関数componentWillUnmount()を使用して、タイマーとイベントをクリアできます。コンポーネントの早期アンロードは避けてください(コールバック関数のsetStateはコンポーネント全体の状態を変更しません)。

componentWillUnmount(){ //The hook function executed before the component is unloaded This.refs.btn.onclick = null //Clear the event bound on dom clearInterval(this.timer) //Clear the timer }