它似乎並不是故意行爲。我能不與下面的代碼發射該選項卡的onChange檢查和取消選中該複選框:
handleChangeCapture(e) {
e.stopPropagation();
}
checkUncheck(e) {
console.log('change')
this.setState({
isChecked: !this.state.isChecked
});
}
render() {
return (
<MuiThemeProvider muiTheme={muiTheme}>
<Tabs value='a' onChange={ e => console.log(e) }>
<Tab label='a' value='a'>
<div onChangeCapture={this.handleChangeCapture}>
<Checkbox onClick={this.checkUncheck} checked={this.state.isChecked}/>
</div>
</Tab>
</Tabs>
</MuiThemeProvider>
);
}
當然,我說isChecked: false
的狀態,並把在構造this.checkUncheck = this.checkUncheck.bind(this);
。在父div上使用onChangeCapture
並停止事件傳播(使用stopPropagation
)基本上就是我所做的。 This answer explains how onClickCapture works。我沒有在documentation中明確地找到onChangeCapture,但它似乎工作相似。
你有任何jsbin或codepen嗎?這聽起來不是一種正常的行爲。 –
@AvraamMavridis我已經更新了這個問題。儘管如此,該分支包含一些不相關的更改。 –