Это не кажется намеренным поведением. Я был в состоянии проверить и снимите флажок без стрельбы 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);
. Использование onChangeCapture
в родительском div и остановка распространения события (с stopPropagation
) - это в основном то, что я сделал. This answer explains how onClickCapture works. Я явно не нашел onChangeCapture в documentation, но, похоже, работает аналогичным образом.
У вас есть jsbin или codepen с этим? Это не звучит как нормальное поведение. –
@AvraamMavridis Я обновил вопрос. Однако ветка содержит некоторые нерелевантные изменения. –