如何使用apollo完成graphql查询等待?

时间:2017-12-28 14:29:06

标签: graphql apollo

我有以下代码:

  ngOnInit() {

    this.data = this.apollo.query({ query: ResidentQuery }).subscribe(({data, loading}) => {
      this.data = data;
      this.loading = loading;
    });

    if (!this.loading) {
      // using this.data
    }
   }

我希望在(!this.loading)之后处理它们之前加载数据。情况并非如此,因为加载是异步的。在使用数据之前我如何等待数据?

我正在使用apollo客户端进行graphql查询。 ResidentQuery是一个包含graphql查询的字符串。

感谢您的反馈!

1 个答案:

答案 0 :(得分:1)

我不确定角度是如何工作的,但我知道它是如何起作用的,我知道两者是相似的。

在做出反应时,您需要使用componentWillReceiveProps(),例如:

componentWillReceiveProps(newProps){
        if(!newProps.query.loading){
            this.setState({data: newProps.query.data})
        }
    }

来自how angular and react lifecycles are similar

的中篇文章
  

基本上,道格将由Angular自动绑定,所以我   假设setter和getter函数将是那个部分,它给出了   你是一种生成复杂状态或变量的方法,就像你可以做的那样   在componentWillReceiveProps()。