我将状态从父组件传递到子组件一切正常但我未定义来自父组件的道具我认为因为我正在制作async
它在设置状态之前需要两秒钟。当我在Child组件的this.props.check
中设置TimeOut componentDidMount
两秒时,它可以正常工作
这里的问题我不能使用setTimeOut
,所以我决定使用componentWillReceiveProps
它已经工作但是当子组件中的任何事件呈现{{1}时将重新渲染,我只需要渲染一次。
我将代码更改为简单
父组件
componentWillReceiveProps
子组件
class App extends Component {
constructor(props) {
super(props);
this.state = {
check: ''
}
}
componentWillMount() {
this.call();
}
call = () => {
//I'm making async here might take two sec
this.setState({ check: 'received' })
}
render() {
return (
<div>
<span>Parent Component</span>
<Child check={this.state.check} />
</div>
)
}
}
答案 0 :(得分:1)
如果应用的state.check
可能是null
(因为它是异步设置的),您需要决定在此期间要渲染的内容。
在应用程序的渲染方法中使用此设置Child
之前,您可能根本不想渲染state.check
:
{ this.state.check ? (<Child check={this.state.check} />) : (<div>Loading...</div>) }