Javascript React道具不更新状态

Javascript React道具不更新状态,javascript,reactjs,Javascript,Reactjs,我试图从其父级的道具设置嵌套组件的状态,如果我直接使用父级的传入道具设置开关的选中道具checked={Boolean(this.props.contData.statesValue.active)},则开关用户界面成功地从打开变为关闭 import React,{Component}来自“React” 从'@material ui/core/Switch'导入开关; 类测试扩展了组件{ render(){ 返回( ); } } 导出默认值(测试)该状态最初设置为道具值,在收到新道具值时不会更

我试图从其父级的道具设置嵌套组件的状态,如果我直接使用父级的传入道具设置开关的选中道具
checked={Boolean(this.props.contData.statesValue.active)}
,则开关用户界面成功地从打开变为关闭

import React,{Component}来自“React”
从'@material ui/core/Switch'导入开关;
类测试扩展了组件{
render(){
返回(
);
}
}

导出默认值(测试)该状态最初设置为道具值,在收到新道具值时不会更新

这就是
getDerivedStateFromProps
生命周期方法的作用:

state = {};

static getDerivedStateFromProps(props, state) {
  return {
   checked: !!props.contData.statesValue.active
  };
}

render() {
    return (
        <div>
          <Switch checked={this.state.checked} />
        </div>
    );
 }
state={};
静态getDerivedStateFromProps(props,状态){
返回{
选中:!!props.contData.statesValue.active
};
}
render(){
返回(
);
}
如果状态与道具没有区别,则不需要状态;组件可以是无状态的,直接使用props。

{code>{Boolean(this.state.checked)}
将变量转换为不再是变量的布尔值。它获取this.state.checked的值,将其转换为布尔值,不再更新,因为它不是变量。因此,您需要将其改为