Я работаю над проектом 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() для выполнения того же запроса?





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()).