аннулирование unstable_createResource в реакции-кеше / ожидании - PullRequest
0 голосов
/ 06 февраля 2019

Как сделать недействительным ресурс, созданный react-cache?

Я могу получить данные из API:

const FooResource = createResource(id => fetch(`/foo/${id}`)); // return a promise, or async/await

// inside render...
const fooResponse = FooResource.read(id); // suspends if not in cache; renders if in cache
return <div> {fooResponse} </div>;

Однако, когда я обновляю данные в бэкэнде, я не могудля повторного получения данных во внешнем интерфейсе.

Это единственная официальная документация, которую мне удалось найти: https://github.com/sw-yx/fresh-concurrent-react/blob/master/apis/react-cache.md

Есть ли какой-нибудь недокументированный API, который я могу использовать??

Ответы [ 4 ]

0 голосов
/ 14 июля 2019

В настоящее время исходный код react-cache не указывает на какие-либо возможности invalidation.Имеет смысл потребовать invalidation, чтобы обновить результаты, например, после добавления нового комментария или публикации, а также использовать suspense с post/put/delete запросами, которые не должны быть cached по умолчанию впервое место.

0 голосов
/ 08 февраля 2019

При использовании react-cache требуется гораздо больше контроля над кешем.Кажется, он написан с учетом только рендеринга на стороне клиента (хотя он работает как на csr, так и на ssr).

На сервере высока вероятность того, что для определенного интервала необходимо кэшировать только несколько конкретных API.,Все пользовательские API или данные не должны кэшироваться в реагирующем кеше.

реагирующий кеш должен обеспечивать контроль, позволяющий дифференцировать поведение кэширования как на клиенте, так и на сервере, поскольку в обеих средах используются совершенно разные сценарии использования.

0 голосов
/ 08 февраля 2019

В общем - вы не можете, и поэтому он "нестабилен".Не используйте его ни для чего, кроме демонстраций и мастеринга. Мы, вероятно, заменим все это другим API.

0 голосов
/ 08 февраля 2019

На данный момент react-cache использует политику кэширования LRU ( наименее недавно использованный ).В соответствии с этой политикой наименее недавно использованные записи сначала становятся недействительными.

Размер кэша можно установить с помощью функции unstable_setGlobalCacheLimit.

Я не смог найтифункция для явного аннулирования кэша в проекте .Я также думаю, что это хорошая новость, потому что работа с кешем - это, как правило, хлопоты.Похоже, что LRU сделает это проще для большинства пользователей React.

Ручное управление кэшем может найти свое применение в будущих версиях react-cache, поскольку все больше разработчиков используют эту технологию и находят новые варианты использования, которым требуетсяиндивидуальный подход, но я сомневаюсь, что это то, что нужно учитывать на данный момент.

...