У меня есть мутация для моего компонента реакции, которая опускает данные:
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 />
?