古い情報なので何番煎じか分からないが失礼して記述する
前提
- react においてブラウザコンソール上にメモリーリーク警告が表示されるケースがある
- これらは component が消える際の開放漏れが原因らしい
メモリーリークしないパターン
以下の様な, useState を開放するパターンは本来メモリーリークしない.
あくまで, エラーメッセージ抑制のために用いられている手法とのこと.
useEffect(() => {
setFlag(true)
await saveData(); // 非同期処理中にコンポーネントが unmount されるかもしれない
setFlag(false)
}, []);
根拠: 開発者の明確な記述
こちらの中で, 当パターンでは実際にはメモリリークしないと明記されている.
また, react 18 へ上げる事で警告メッセージは表示されなくなるとのこと.
謝辞
開発中に教えていただいた皆様, ありがとうございます