如何基于某些道具启动状态



我想根据组件A收到的道具来初始化它的状态值。如果它没有收到那个道具,值应该是a,但是如果它收到了某个道具,值应该是B。这个状态也会被用作这个组件a的一个选择的默认值,选择选项会改变这个状态,这个状态值也会作为一个道具传递给子组件B。我能知道什么是好的解决办法吗?我应该使用componentdiduupdate, componentWillReceiveProps重置状态,引用任何其他方法吗?谢谢!

class ComponentA extends Component {
constructor(props) {
super(props)
this.state = {
value: "a"
}
}

componentWillReceiveProps(props) {
const someProp = props[someKey];
let someVal = someFunc(someProp);
if (someProp) {
this.setState({value:someVal})
}
}
}
...
handleChange = (val) => {
this.setState({value:val})
}
......
<select 
options ={options}
value = {this.state.value}
onChange = {this.handleChange}
/>
<Input
selectVal = {this.state.value}
/>

保持这样,你也可以在条件中使用setState来定义上面的状态


const [state, setState] = useState ('a');
if(prop.value)
setState ('a');
else
setState ('b');

最新更新