我想在执行addCourseToOrder突变后获取userUnpurchasedCourses查询,但是我无法做到这一点。 在向订单添加一个类之后,它将获取userUnpurchasedCourses查询,但是如果我再次向订单添加课程,则该查询将不会运行。
我已经尝试在突变的then块中执行查询,还尝试了refetch查询,但是refetch查询的问题是我无法获得查询结果。
这就是我定义突变的方式
const Mutation = async (query, variables, refetch) =>
client.mutate({
mutation: gql`
${query}
`,
variables,
refetchQueries: () => [
{
query: gql`
${refetch?refetch:query}
`,
variables
}
]
});
我在这里使用了这种突变
let res = await Mutation(classes.addCourseToOrder(), {
userId,
id,
orderId,
amount,
})
if (res.data.addCourseToOrder) {
this.props.getUserUnpurChasedCourses({id})
}
getUserUnpurChasedCourses将负责运行userUnpurchasedCourses。
如果您需要更多细节,请告诉我
谢谢。
答案 0 :(得分:1)
当我观察到这个问题时,我发现查询在每次突变后都在运行,但不是从服务器(网络)中获取数据,而是从缓存中获取结果,然后经过大量查询之后,我发现那里是一种禁用从缓存中获取数据的方法,因此我一遍又一遍地尝试直到完成。
我所做的就是更改查询内容
export const Query = async (query, variables) =>
client.query({
query: gql`
${query}
`,
variables
});
对此
export const Query = async (query, variables) =>
client.query({
query: gql`
${query}
`,
variables,
fetchPolicy: 'network-only'
});