使用Apollo客户端设置初始状态

时间:2019-01-24 21:01:50

标签: reactjs react-apollo graphql-js

我正在尝试使用通过带mapql的apollo客户端创建的道具来设置反应状态变量的初始状态。

 this.state = {data:myFunc(this.props.data};

问题在于,设置状态后this.props.data为空。我查看了生命周期方法中的设置,但它仍然返回空。只有在render()中调用一个函数时,我才能得到输出。

1 个答案:

答案 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