#graphql #apollo #react-apollo
#graphql #apollo #реагировать-apollo
Вопрос:
У меня есть набор запросов Apollo, как показано ниже.
query {
speakers {
id
name
checkBoxField @client
}
}
У меня установлена политика полей следующим образом:
export const genericBoolean = cache.makeVar(false);
typePolicies: {
Speaker: {
fields: {
checkBoxField: {
read(checkBoxField = false) {
return genericBoolean === true ? "true" : "false";
...
На моей странице есть кнопка, в которой я использую определенный useQuery, и эта кнопка выполняет код:
onClick : genericBoolean(true)
Когда я сбрасываю (JSON.stringify) данные, возвращенные из useQuery, поле флажка меняется на true для всех строк, как и ожидалось, но в моем кэше Apollo (как видно из расширения Chrome) для поля флажка не сохранено поле. Я хочу, чтобы это было там, чтобы я мог перебирать свой кэш и получать значение set для каждой строки.
Ответ №1:
Согласно документам Apollo, вы можете использовать реактивные переменные ИЛИ кэш клиента Apollo для хранения локального состояния: https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/#storing
В приведенном выше примере используются реактивные переменные. Чтобы сохранить ваши данные в кэше, вам нужно будет использовать writeQuery
или writeFragment
: https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/#storing-local-state-in-the-cache