setup-cleanupパターン
名前はmiyamonz.iconが適当につけたものです
code:js
somtheing( () => {
const handler = somethingListen()
return () => removeListener(handler)
})
なんかを登録して、それをやめたいときの処理を返り値にコールバックとして渡す
reactのuseEffectでmiyamonz.iconは知った
これがめっちゃきれいと思ってる
おれを破棄するときはこれをしてくれよな、というのを自分自身が伝えるのは礼儀が正しい(?)
返り値なので、class的なものにonUnmountとか、デストラクタとかやらないですむ
値の生成と破棄というのは、始まりと終わりがあるライフサイクル、一直線の有限なステート
関数呼び出しの繰り返しだけで表現できる
ならそれがいいじゃん
useEffectの場合は、さらにそのマウントのやり直しをdepsの値の変化で表現できる
go言語のdeferは、これを言語レベルのブロックスコープで実現しているということになる