GraphQL突变结果更新

时间:2018-11-09 20:12:31

标签: graphql apollo react-apollo apollo-client

我的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 />查询缓存?

0 个答案:

没有答案