如何在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
相关产品推荐
相关产品推荐

