MinamiInoue2323 / osoji_kun

osoji-kun.vercel.app
1 stars 0 forks source link

useCallback, useMemoを使ってみよう #56

Open kyuki3rain opened 2 years ago

kyuki3rain commented 2 years ago

useCallback: https://qiita.com/seira/items/8a170cc950241a8fdb23

useMemo: https://qiita.com/seira/items/42576765aecc9fa6b2f8

リアクトコンポーネントとかカスタムフックは、レンダリングのたびに再実行されます。それは、関数定義とかも一緒。 流石に毎回やってたらうざい(≒重たくなる)ので、useCallbackで囲むと実行頻度が抑えられます。 とはいえ、関数の中でstateとか使ってたりすると、その値が更新されないのは困ったりします。 そういう時、そのstateだけuseEffectみたいに第二引数の配列に書いてあげることで、その変化時だけ再実行するコードになります。 useMemoはその値版。どっちも基本的には関与してる値全部配列に書いちゃって問題ない(というかそうすべき)です。 useEffectの時は無視していたWarningもここではちゃんと自動埋めして解消しましょう。 書き方はこんな感じ

const [integer, setInteger] = useState(0);
const addItem = useCalback((item) => {
    setInteger(integer + item)
}, [integer]);
kyuki3rain commented 1 year ago

https://weseek.co.jp/tech/3917/

どこに使うべきか、はかなり所説ありそうなので、いったん後回しにして困ったらやってみることにしましょう。