Обновление результатов GraphQL Mutation - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть мутация для моего компонента реакции, которая опускает данные:

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
};

Я бы хотел, чтобы список обновлялся из-за мутации изначально, однако я не верю, что мутации так работают.

Вместо этого я попытался построить запрос непосредственно к этому кешированному файлу, но не смог заставить что-либо работать, так как он не существует напрямую в моей схеме запросов. Есть ли способ для мутации обновить свои данные при обновлении кэша? Есть ли способ запросить кэш с помощью <Query />?

...