s_kajigo
@s_kajigo (kaji shogo)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

onClickイベントでのStateの更新方法について

現在React学習中です。

App.js
export const App = () =>{
 const [ state, setState ] = useState(false);
 const handleOnClick = () =>{
  setState(true);
 }

 return(
    <Button onClick={handleOnClick}></Button>
  );
}

onClickイベントにわたす関数についてですが、私が見てきたコードでは、handleOnClickを定義していることがほとんどでした。この場合、以下のように

App.js
export const App = () =>{
 const [ state, setState ] = useState(false);

 return(
    <Button onClick={() => setState(true)}></Button>
  );
}

とstateの更新のみの場合は、setState関数を直接渡す方がコード量も減るし、見やすいのではないかと感じるのですが、みなさんはどのように判断されているのでしょうか?

初歩的な質問だとは思いますが、ネットでの検索結果では正解に辿り着けませんでしたので、ご教授いただけると幸いです。

0

1Answer

あまり明確な指針というのはないと思いますが,関数式を書いた時点で関数オブジェクトを生成していることには注意すべきと思います.

<Button onClick={() => setState(true)}></Button>

このonClick内での記述はsetState関数を渡しているのではなく,setStateを呼びだす関数を生成しています.

これは上下どちらのコードにも言えることですが,関数オブジェクトはコンポーネントが再描画されるたび生成されるため,頻繁に再描画が起こった際にパフォーマンス上の問題を起こすことがあります.
そのため適宜useCallackでメモ化します.

回答としては「パフォーマンス低下の懸念がないならなんでもいい」ですが,個人的には匿名関数を減らす上のコードの方が,動作機序が分かりやすいと思います.

1Like

Comments

  1. @s_kajigo

    Questioner

    ありがとうございます。
    勉強になりました。 useCallbackについても勉強させていただきます!

Your answer might help someone💌