**问:**比如有个父子组件,父组件异步调用接口方法获取下拉框数据,将数据传给子组件,子组件默认选中下拉框数据的第一项;
**答:**在 componentDidMount 中 this.setState 是异步的。
class child extends React.Component {
//监听属性变化来更改 state
static getDerivedStateFromProps(){
if("selectData" in nextProps){
let selectData = nextProps.selectData;
return { selectData }
}
return null;
}
constructor(props){
super(props);
this.state = {
selectData: props.selectData || []
}
}
}
或者
//父组件中,等待有数据了再加载子组件
render(){
return(
{ selectData ? <child /> : null }
)
}