2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【React】onClick内の関数の書き方の違い

Last updated at Posted at 2024-09-12

結論:ほとんど違いはなし

buttonタグ内にあるonClickの書き方はどちらでも可

違いとしては

  • onClick={handleClick}の書き方の場合
    • コンポーネントが再レンダリングされても関数は再生成されない
  • onClick={() => handleClick()}の書き方の場合
    • コンポーネントが再レンダリングされる度にアロー関数が再生成される

基本は前者の書き方で、引数を受け取りたい場合は後者の書き方がよい

const handleClick = () => {
  console.log("clicked")
}

return (
  <div>
    <button>
      // 下記はどちらでも可
      onClick={handleClick}
      onClick={() => handleClick()}
    >
      hgoe
    </button>
  </div>

追記(2024/10/20)

mapでループなどしている場合は、前者の書き方だとそこを通る度に関数が実行されてしまう
下記の場合、alertでidが1, 2, 3...とループで表示されてしまう

const onClickDelete = (id) => {
  alert(id);
}

{todos.map((todo) => (
  <li key={todo.id}>
    <p>{todo.text}</p>
    <button onClick={onClickDelete(todo.id)}>削除</button>
  </li>
))}

そのため、アロー関数型で書く

- <button onClick={onClickDelete(todo.id)}>削除</button>
+ <button onClick={() => onClickDelete(todo.id)}>削除</button>

参考

2
0
1

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?