如何在 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
组件或使用useQuery
或watchQuery
的组件都将被更新,前提是query
和variables
参数与refetchQueries
中的内容匹配。
如果您还没有使用该查询的组件,则需要添加一个。
【讨论】:
以上是关于如何在 reactjs 16.8 中获取 refetchQueries 数据的主要内容,如果未能解决你的问题,请参考以下文章