Pular para o conteúdo principal

useCache()

Renderização de dados sem o fetch.

Acessa a resposta de qualquer Endpoint. Se a resposta não existir, retorna undefined. Isso pode ser usado para verificar a existência de um Endpoint's, como para autenticação.

useCache() reage às mutações de dados; renderizando novamente apenas quando necessário.

Uso​

<script setup lang="ts">
  import { useCache } from '@data-client/vue';
  import { UserResource } from './UserResource';
  import Unauthed from './Unauthed.vue';
  import Authorized from './Authorized.vue';

  // currentUser as ComputedRef<User | undefined>
  const currentUser = useCache(UserResource.current);
</script>

<template>
  <!-- currentUser is unwrapped in the template -->
  <Authorized v-if="currentUser" :user="currentUser" />
  <!-- user is not logged in -->
  <Unauthed v-else />
</template>

Veja truthiness narrowing para mais informações sobre o tratamento de tipos

Comportamento​

useCache() retorna um ComputedRef. A tabela abaixo descreve seu .value.

Status de expiraçãoRetornaCondições
Invalidundefinednão está no store, exclusão, invalidação, invalidIfStale
Staledesnormalizado(primeira renderização, mudança de argumentos) & expiração < agora
Validdesnormalizadoconclusão do fetch
undefinednull usado como segundo argumento
Dependências condicionais

Usar null como segundo argumento de qualquer hook do Data Client significa "não fazer nada."

// todo could be undefined if id is undefined
const todo = useCache(
TodoResource.get,
computed(() => (id.value ? { id: id.value } : null)),
);

Tipos​

function useCache(
endpoint: ReadEndpoint,
...args: MaybeRefsOrGetters<Parameters<typeof endpoint.key>> | [null]
): ComputedRef<DenormalizeNullable<typeof endpoint.schema>>;

Os argumentos podem ser valores simples, refs (incluindo computed) ou funções getter como () => ({ id: props.id }). Um objeto simples como { id: props.id } é lido uma única vez e não acompanha mudanças de props ou de rota, então use um getter ou computed quando um argumento puder mudar.

O resultado é atualizado quando os argumentos mudam.