反应,正确更新chexkbox

时间:2020-04-29 14:48:29

标签: javascript reactjs react-bootstrap

嗨,我的问题是我的父母组件有一个复选框。这个家长组件也有许多带有chechboxes的子组件。我需要这样做: 如果我单击父母复选框,我还需要设置状态子复选框。但是之后,我应该不能取消点击一些子chcekbox,

我的孩子这样讨厌:

export class ThemePartKnowledge extends Component {

    static get propTypes() {
        return {
            knowledge: PropTypes.object.isRequired,
        };
    }

    constructor(props) {
        super(props);
        this.state = {
            isChecked:false,
        }
    }


    render() {
        return (
            <Card className={'themePartKnowledge ml-2'}>
                <Card.Header className={'d-flex flex-column flex-md-row p-x0'}>
                        <Form.Group controlId="formBasicCheckbox" className={'m-0 d-inline-block'}>
                            <Form.Check c type="checkbox" className={'my-auto'}/>
                        </Form.Group>
                  </Card.Header>
            </Card>
        );
    }
}

我的Parrent控制器只是向该组件发送isParrentChcecked道具。

我该怎么做?寻求帮助

编辑: 所以我的结构看起来像这样

  • 父母
    • 孩子
    • 孩子
    • 孩子

1 个答案:

答案 0 :(得分:1)

componentDidUpdate正是这样做的。在这里,isParentChecked每次更改时,我都将isChecked状态同步到父对象。

componentDidUpdate(prevProps, prevState){
  if(prevProps.isParentChecked !== this.props.isParentChecked){
    this.setState({isChecked: this.props.isParentChecked})
  }
}