如何在 reactjs 16.8 中获取 refetchQueries 数据

Posted

技术标签:

【中文标题】如何在 reactjs 16.8 中获取 refetchQueries 数据【英文标题】:How to get refetchQueries data in reactjs 16.8 【发布时间】:2019-12-15 18:05:31 【问题描述】:

我正在尝试使用 refetchQueries 在突变后获取更新的记录列表。我尝试使用下面的代码来获取更新的数据,但更新的数据显示在开发者控制台的network tab中。

这是针对 reactjs 16.8 和 "react-apollo": "^2.5.5" 的,它似乎 awaitRefetchQueries: true 不起作用

client.mutate(
        mutation: ADD_ACTIVE_CREW,
        variables: 
          activeCrewInfo: 
            employee: activeCrew[0].vp_id,
            date_on_crew: new Date(),
            crew_id: selectedCrewId
          
        ,
        options: () => (
          refetchQueries: [
            
              query: GET_EMPLOYEE_BY_CREW_ID_QUERY,
              variables:  crew_id: crew_id 
            
          ]
        ),
        awaitRefetchQueries: true

      );

我在开发者控制台的网络选项卡中得到正确响应,但无法在我的 reactjs 应用程序中访问。

【问题讨论】:

.then(() => this.setState(whatever)) ` .then(result => const arrUpdatedData = result.data; console.log(arrUpdatedData); ) .catch(err => console.log(err)); ` 我已经检查了上面的代码,但没有得到正确的数据。 【参考方案1】:

变异数据本身永远不会反映重新获取的查询。

您告诉 Apollo 重新获取的任何查询都将被请求,然后将其结果写入缓存。这意味着任何Query 组件或使用useQuerywatchQuery 的组件都将被更新,前提是queryvariables 参数与refetchQueries 中的内容匹配。

如果您还没有使用该查询的组件,则需要添加一个。

【讨论】:

以上是关于如何在 reactjs 16.8 中获取 refetchQueries 数据的主要内容,如果未能解决你的问题,请参考以下文章

React 16.8发布:hooks终于来了!

如何在服务器发送的reactjs中获取JWT cookie

如何在 ReactJS 中获取没有正斜杠的路由名称

如何在 reactJS 中使用 id 从 API 获取数据?

reactjs中如何从API中获取值

如何在reactjs中获取先前的状态值