我正在尝试使用通过带mapql的apollo客户端创建的道具来设置反应状态变量的初始状态。
this.state = {data:myFunc(this.props.data};
问题在于,设置状态后this.props.data为空。我查看了生命周期方法中的设置,但它仍然返回空。只有在render()中调用一个函数时,我才能得到输出。
答案 0 :(得分:1)
我假设this.props.data
是异步加载的,并且在您尝试将其分配给this.state
时尚未加载(我假设在构造函数中)。
在getDerivedStateFromProps
中是个不错的选择:
static getDerivedStateFromProps(props, prevState) {
if (props.data && !prevState.data) {
// Only return this when props.data has just loaded.
// Figure out the best way to determine that for your code.
return { data: myFunc(props.data) };
}
return {};
}
https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops