html - React onChange 处理程序在页面加载期间被多次调用

标签 html reactjs state jsx

我们正在尝试将 onChange 处理程序添加到我们的自定义组件之一 - 即 Checkbox 组件(它是自定义组件的唯一原因是我们可以有效地封装 intermediate HTML 属性)。它看起来像这样:

<Checkbox
  id="select-all"
  onChange={this.handleSelectAllChange(ids)}
  indeterminate={isIndeterminate}
  checked={areVisibleItemsSelected}
  disabled={isDisabled}
/>

处理函数的结构有点像这样:

handleSelectAllChange(ids) {
  // omitted code that filters on ids and produces newIds

  this.props.updateIds(newIds);
}

其中 this.props.updateIds 是一个修改父组件状态的传递函数。

问题在于,该函数在页面加载期间被调用了大约 10 次,这不是有意的。我以为只有在修改实际复选框元素时才会调用它?

最佳答案

通过这样声明 onChange={this.handleSelectAllChange(ids)},方法调用会在呈现 CheckBox 时立即发生。在 ES6 中,您可以通过使用

来避免这种情况

onChange={() => this.handleSelectAllChange(ids)}

这意味着您传递一个新函数,该函数将在更改时调用handleSelectAllChange

关于html - React onChange 处理程序在页面加载期间被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44019715/

相关文章:

javascript - 如何禁用 div 元素内的 anchor 标记 onclick 事件?

javascript - 页面刷新时未登录 Google 登录(Polymer)

html - 绝对定位 + 负边距随窗口大小调整而扭曲

html - 站点中每个页面的替代版本是否是 WCAG 2.0 的有效方法?

javascript - 如何测试react-router-dom?

c# - 如何在 Windows 应用商店应用程序中保存我的状态?

javascript - 使用 react 双击编辑输入的文本

javascript - event.which 在 react 中未定义

c# - 对跟踪状态的类进行单元测试

javascript - react : Pass value of HTML element to event handler onClick