Почему Apollo кэширует (?) writeQuery() повторно отображать компонент запроса

Я работаю над проектом React с использованием Apollo Client, и есть вызов cache.writeQuery(), который вызывает повторную визуализацию связанного компонента запроса.

Подробности смотрите в коде:

cache.writeQuery():

cache.writeQuery( {
    query : serverQueries.searchMessages,
    variables : {
        labelId : labelId,
        searchTerms : searchTermsString ? searchTermsString : null,
        )
    },

    data : { Messages : updatedData }
} );

Related query component that is re rendering:

<SearchMessagesQuery
            query = {serverQueries.searchMessages}
            variables = {{
                labelId: searchMailLabelId,
                searchTerms: searchTerms.asJSON,
            }}>

Я не хочу, чтобы этот компонент запроса повторно отображался, и из того, что я прочитал, кажется, что cache.writeData() допускает такое поведение. Однако cache.writeData(), по-видимому, не позволяет использовать ключ variable, который мне потребуется для обновления уникального/индивидуального searchMessages. Как я могу использовать cache.writeData() для выполнения того же запроса?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
1 200
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

cache.writeData() использование для обновления одного элемента (по типу) описано здесь

Но ... я боюсь, что это также заставит перерисовать компонент запроса. Это поведение из <Query/> внутренних компонентов компонента — создание наблюдаемого/подписки:

Apollo Client creates an observable for our query. Our component subscribes to the result of the query via the Apollo Client cache.

ПРЕДЛОЖЕНИЕ: Вы можете использовать Старыйgraphql() HOC, чтобы избежать повторного рендеринга с cache.writeQuery(). Я лично предпочитаю HOC, использующие более гибкий/мощный перекомпоновать шаблон (например, для составления нескольких запросов, мутаций, локального состояния, избыточности connect()).

Другие вопросы по теме