Каковы правила выселения для apollo-cache-inmemory?
Из того, что я понимаю, все в кеше эфемерно и подчиняется какому-то правилу выселения, например, LRU. В этом случае, если мы используем кэш в памяти и apollo-link-state для замены redux или vuex, как мы можем гарантировать, что некоторые состояния не будут выселены во время работы приложения?
1 ответ
Начиная с версии Apollo Client v2, выселения нет. На основании комментариев это может быть в дорожной карте для v3.
Вы можете проверить эти вопросы Github для обсуждения:
- https://github.com/apollographql/apollo-client/issues/3965
- https://github.com/apollographql/apollo-feature-requests/issues/4
- https://github.com/apollographql/apollo-client/issues/621
Что касается более общего вопроса - в большинстве случаев такая гарантия не нужна. Причина в том, что кэш полностью прозрачен для приложения благодаря дизайну клиента Apollo и React. Когда вы используете Query
компонент, ваш подкомпонент будет получать данные. На этом этапе вы решаете, что делать, если данные доступны или нет.
Например, если вы решите визуализировать загрузочный счетчик, если данные недоступны, то теоретически каждый раз, когда данные удаляются, ваш компонент будет повторно отображаться и отображать счетчик.
Я могу представить себе случай, когда у вас может быть длительная асинхронная операция (если она не асинхронная, то снова данные не могут быть извлечены в середине из-за модели выполнения JavaScript). В таком случае (редко, но возможно) вы можете сначала скопировать данные в локальные переменные и т. Д.