我的react组件有一个变异,该变异会提取数据:
mutation FetchQuestion($level: Int!, $topic: Topics!){
generateQuestion(level: $level, topic: $topic) {
id
question
working
expanded @client
marks
}
}
使用解析器添加扩展字段
const GeneratedQuestion = {
expanded: () => false,
}
数据向下传递到组件以查询和呈现结果
<Mutation mutation={QUESTION_MUTATION} variables={{ level, topic }}>
{(generateQuestion, { data }) => <List generateQuestion={generateQuestion} data={data} />}
</Mutation>
但是,我然后使用另一个突变来更改expanded
const expandQuestion = (_: any, variables: { questionID: string }, {
cache }: any) => {
const id = `GeneratedQuestion:${variables.questionID}`
const fragment = gql`
fragment completeQuestion on GeneratedQuestion {
expanded
}
`;
const questions = cache.readFragment({ fragment, id });
const data = { ...questions, expanded: true };
cache.writeData({ id, data });
return null
};
我希望从Mutation中更新列表是原来的,但是,我不认为Mutations可以那样工作。
相反,我尝试直接针对已缓存的查询构建查询,但是由于我的查询模式中不存在任何查询而无法使其正常工作。缓存更新时,Mutation是否可以更新其数据?有没有办法使用<Query />
查询缓存?