【发布时间】:2019-04-18 18:30:54
【问题描述】:
我正在使用material-ui
我的反应组件在这里:
import Checkbox from '@material-ui/core/Checkbox';
import FormControlLabel from '@material-ui/core/FormControlLabel';
import React from "react";
import { withStyles } from "@material-ui/core/styles";
const styles = (theme) => ({
});
class SomeComponent extends React.Component {
static propTypes = {
};
state = {
checked: true,
}
handleChange = name => event => {
event.persist()
this.setState({
[name]: event.target.checked
}, () => {
if (event.target.checked) {
this.props.parentMethod1(event.target.value)
} else {
this.props.parentMethod2(event.target.value)
}
});
};
render() {
const { user } = this.props;
return (
<div>
<FormControlLabel
control={
<Checkbox
checked={this.state.checked}
onChange={this.handleChange('checked')}
value={user.id}
color="primary"
/>
}
label={user.first_name}
/>
</div>
);
}
}
export default withStyles(styles)(SomeComponent);
问题是,我只能选择/取消选择复选框一次。 选择/取消选择复选框后,不会发生 onChange 事件。
您能帮助我如何使 Checkbox 能够正常工作吗? 谢谢。
这里是重现的错误:
【问题讨论】:
-
不要在回调中使用
event.target.checked和event.target.value,您可以将checked和value放入变量中,这是您在从handleChange返回的函数中所做的第一件事:@987654330 @ 并改用它。这样你就不需要持久化事件。这能解决问题吗? -
这将删除警告,但问题尚未解决。
-
您好。我似乎无法使用与您类似的代码重现该问题:codesandbox.io/s/m788313rvp
-
使用这么多,我们无法重现错误。父组件的合成事件很少,而且太大,无法在此处添加。我会尽量减少代码并在这里编辑。
-
@AndyJ 请看codesandbox.io/s/y041zknrqv
标签: javascript reactjs material-ui dom-events