react如何处理异步数据的传值问题?

564 阅读1分钟

**问:**比如有个父子组件,父组件异步调用接口方法获取下拉框数据,将数据传给子组件,子组件默认选中下拉框数据的第一项;

**答:**在 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 }
  )
}