/* 業務でハマったところなので、実際のコードとは異なる疑似コードです */ const audioRef = useRef<HTMLAudioElement | undefined>(); useEffect(()=> { console.log(audioRef === undefined) // 別のコンポーネントでaudioRefに代入しても常にTrueが出力される <- ①why? }, [audioRef])
`当初の見立て`
1. 複数のコンポーネントが上記のhooksを呼び出す
2. 複数のaudioRefがundefinedでsetされる
3. useEffectが複数回実行される
4. 副作用関数が複数回実行される
5. audio elementのrender後に、#audio-container内に\<audio\>を作ってaudioRefに代入する
6. 副作用関数が動いい、①でFalseになるはず
①の原因:
refをdependencyにしても動かないことがあるよ、ということらしい
https://zenn.dev/service_503/articles/b7668a820b5856
試行錯誤している最中に学んだこと
CallStack, Task Queue, Eventloopの概念