Почему Apollo cache (?) WriteQuery () повторно отображает компонент запроса - PullRequest
0 голосов
/ 15 мая 2019

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

Подробнее см. Код:

cache.writeQuery ():

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

    data : { Messages : updatedData }
} );

Связанный компонент запроса, который перерисовывается:

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

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

1 Ответ

0 голосов
/ 16 мая 2019

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

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

Клиент Apollo создает наблюдаемый для нашего запроса. Наш компонент подписывается на результат запроса через клиентский кеш Apollo.

SUGGESTION : Вы можете использовать old graphql() HOC, чтобы избежать повторного рендеринга с cache.writeQuery(). Лично я предпочитаю, чтобы HOC использовали более гибкий / мощный шаблон перекомпоновки (например, для составления нескольких запросов, мутаций, локального состояния, приращения connect()).

...