1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アプリ開発中onClickの発火タイミングについて理解不十分により意図しない挙動がされたため、注意点を共有させていただきます。

.jsx
const onClickDelete = () => {
  console.log("削除ボタンがクリックされました");
};

<button onClick={onClickDelete}>削除</button>

上記だとクリックしないと発火しません。

.jsx
const onClickDelete = (index) => {
  console.log(`削除ボタンがクリックされました: ${index}`);
};

<button onClick={onClickDelete(1)}>削除</button>

上記だとボタンが生成された時点で発火してしまいます。

違いは()の位置。onClickDeleteという関数に()が付いているとonClickDeleteをすぐ実行してonClickに結果を渡すとReactが解釈してしまうため、クリックとは関係なくonClickDeleteが実行されてしまいます。

.jsx
const onClickDelete = (index) => console.log(`削除されました: ${index}`);

// 無名関数を渡している
<button onClick={() => onClickDelete(1)}>削除</button>

上記のように無名関数(アロー関数)を使用すれば関数を定義しているだけになり、onClickDeleteに()が付いていても発火はクリックした時だけになります。

JISOUのメンバー募集中!

プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか?
興味のある方は、ぜひホームページをのぞいてみてください!
▼▼▼

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?