如何从另一个组件重新获取 graphql 查询?

Posted

技术标签:

【中文标题】如何从另一个组件重新获取 graphql 查询?【英文标题】:How to refetch graphql query from another component? 【发布时间】:2020-03-30 21:02:31 【问题描述】:

我对 React 非常陌生,尤其是 graphql。

每次使用突变 createEvent 时,我都会尝试重新获取事件查询,因此包含所有事件的页面将自动更新,无需刷新。

但是,我找不到连接这两个查询的方法。

“form.jsx”文件中的我的突变创建事件:

  const body = 
    query:
      "mutation" +
      "createEvent(eventInput:num1:" +
      '"' +
      this.state.num1.toString() +
      '"' +
      ",num2:" +
      '"' +
      this.state.num2.toString() +
      '"' +
      ")" +
      "_id " +
      "num1 " +
      "num2 " +
      "addition " +
      "multiply" +
      ""
  ;
  fetch("https://localhost:8000/graphql", 
    method: "POST",
    body: JSON.stringify(body),
    headers: 
      "Content-Type": "application/json"
    
  )
    .then(res => 
      if (res.status !== 200 && res.status !== 201) 
        throw new Error("Failed!");
      
      return res.json();
    )
    .then(resData => 
      console.log(resData);
    )
    .catch(err => 
      console.log(err);
    );

这是我从“myTable.jsx”文件中查询的事件:

const body = 
  query:
    "query " +
    "events " +
    "_id " +
    "num1 " +
    "num2 " +
    "addition " +
    "multiply" +
    ""
;
//console.log(body);
fetch("https://localhost:8000/graphql", 
  method: "POST",
  body: JSON.stringify(body),
  headers: 
    "Content-Type": "application/json"
  
)
  .then(res => 
    if (res.status !== 200 && res.status !== 201) 
      throw new Error("Failed!");
    
    return res.json();
  )
  .then(resData => 
    const events = resData.data.events;
    this.setState( list: events );
  )
  .catch(err => 
    console.log(err);
  );

我尝试了 Promise 'then' 函数中的 refetchQueries 函数,但它崩溃了。

【问题讨论】:

【参考方案1】:

我从 queries.js 文件中导出了查询,然后启用了使用 ApolloClient 的重新获取选项。

【讨论】:

以上是关于如何从另一个组件重新获取 graphql 查询?的主要内容,如果未能解决你的问题,请参考以下文章

Vue-apollo 从另一个组件重新获取查询

使用 Apollo 重新获取部分 GraphQL 查询的最佳实践?

Apollo GraphQL:子组件重新运行父查询?

使用 graphql 在 react-native 中重新获取查询

GraphQL + Relay:如何执行重新获取授权?

如何在组件外调用 GraphQL