正解はuseMemoまたはuseCallbackです。useMemoは計算結果をメモ化し、useCallbackは関数をメモ化して、依存配列が変わらない限り同じ参照を返します。useStateは状態管理用、useEffectは副作用処理用、useRefは値の保持用で最適化目的ではありません。