javascript - React 行为触发渲染上的所有按钮

标签 javascript reactjs button

我正在通过 map() 生成人员列表和“删除按钮”在 React 组件中渲染(通过 props 传递映射列表并在 <p> 标签内渲染)。

当 React 第一次渲染时,它会触发所有按钮 onClick()并且按钮停止工作。

请问为什么会发生这种行为?

  const deletePerson = (id) => {
    console.log(`deleting id: ${id}`)
  }

  const mappedPersons = persons.map(person => 
    <li key={person.name}>
      {`${person.name} - `}
      {`${person.phone} `}
      <button onClick={deletePerson(`${person.id}`)} value={person.id}>
        delete person
      </button>
    </li>
)

控制台:

deleting id: 1
deleting id: 2
deleting id: 3
deleting id: 4
deleting id: 5
deleting id: 6
deleting id: 7
deleting id: 8

最佳答案

这个答案得到了它: React onClick function fires on render

将按钮onClick更改为:

<button onClick={() => deletePerson(`${person.id}`)} value={person.id}>
        delete person
      </button>

使 map 停止调用渲染函数。

关于javascript - React 行为触发渲染上的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59951220/

相关文章:

java - 与 AngularJS 一起使用的封装模式

javascript - 如何通过鼠标移动 Angular 旋转正方形跟随鼠标?

javascript - React 异步函数不是一个函数

javascript - 如何使用端点返回的 JSON token 响应到 React 中的另一个 .js 文件

javascript - 如何在 React.js 中将文本的一部分加粗?

java - 安卓自定义按钮

javascript - 更改 d3 缩放中的矩形尺寸

javascript - Mvc完成异步脚本加载

java - 按下时如何使按钮变大? (安卓工作室)

javascript - 单击按钮后,无法禁用另一个按钮