You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Material-UI Toggle的事件处理器中传递两个参数?

解决Material-UI Toggle组件传递event和布尔值参数的问题

嘿,这个问题其实很好解决,核心就是要正确接收Toggle组件触发onToggle时传递的两个参数,再转发给你的处理方法就行。

你当前的写法() => this.useAdvancedSearch()没有接住Toggle组件传过来的event和isInputChecked,所以你的方法自然拿不到这两个值。只需要稍微调整箭头函数的写法,把这两个参数接收后再传递给你的方法:

<Toggle 
  label="Advanced search" 
  style={styles.toggle} 
  onToggle={(event, isChecked) => this.useAdvancedSearch(event, isChecked)} 
  toggled={this.state.useAdvanced} 
/>

这样一来,当Toggle触发切换时,组件会自动把event(变更事件对象)和isChecked(Toggle的新状态布尔值)传递给箭头函数,箭头函数再把这两个参数传给你的useAdvancedSearch方法。

举个例子,你的useAdvancedSearch方法可以这样定义来使用这两个参数:

useAdvancedSearch = (event, isChecked) => {
  // 在这里使用事件对象和选中状态
  console.log('触发切换的事件:', event);
  console.log('Toggle的新状态:', isChecked);
  // 比如更新组件状态
  this.setState({ useAdvanced: isChecked });
}

如果之后你只需要布尔值参数、不需要event,还可以用下划线_来表示忽略这个参数(这是JavaScript里常见的写法),让代码更简洁:

<Toggle 
  label="Advanced search" 
  style={styles.toggle} 
  onToggle={(_, isChecked) => this.useAdvancedSearch(isChecked)} 
  toggled={this.state.useAdvanced} 
/>

内容的提问来源于stack exchange,提问作者Steve Waters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:16:47