Snapshot
Snapshots são passados para funções definidas pelo usuário que calculam atualizações de estado. Eles permitem acesso seguro e eficiente aos dados desnormalizados com base no estado atual.
interface Snapshot {
get(schema, ...args) => DenormalizeNullable<typeof schema> | undefined;
getResponse(endpoint, ...args) => { data, expiryStatus, expiresAt };
getError(endpoint, ...args) => ErrorTypes | undefined;
fetchedAt: number;
abort: Error;
}
Use Controller.snapshot() para construir um snapshot
Uso
import { resource } from '@data-client/rest'; import { Post } from './Post'; export { Post }; export const PostResource = resource({ path: '/posts/:id', searchParams: {} as { userId?: string | number } | undefined, schema: Post, }).extend('vote', { path: '/posts/:id/vote', method: 'POST', body: undefined, schema: Post, getOptimisticResponse(snapshot, { id }) { const post = snapshot.get(Post, { id }); if (!post) throw snapshot.abort; return { id, votes: post.votes + 1, }; }, });
Membros
get(schema, ...args)
Busca qualquer Schema Queryable.
getResponse(endpoint, ...args)
{
data: DenormalizeNullable<E['schema']>;
expiryStatus: ExpiryStatus;
expiresAt: number;
}
Obtém a resposta (globalmente estável por referência) de um par endpoint/args a partir do estado fornecido.
data
Os dados de resposta desnormalizados. Garante estabilidade referencial global para todos os membros.
expiryStatus
export enum ExpiryStatus {
Invalid = 1,
InvalidIfStale,
Valid,
}
Os componentes Vue só suspendem durante a montagem; componentes já montados continuam exibindo seus dados enquanto eles são buscados novamente.
Valid
- Nunca suspende.
- Pode fazer fetch se os dados estiverem desatualizados
InvalidIfStale
- Suspende se os dados estiverem desatualizados.
- Pode fazer fetch se os dados estiverem desatualizados
Invalid
- Sempre suspende
- Sempre faz fetch
expiresAt
Um número que representa o momento em que expira. Compare com Date.now().
getError(endpoint, ...args)
Obtém o erro, se houver, de um determinado endpoint. Retorna undefined quando não há erros.
fetchedAt
Quando o fetch que resultou neste snapshot foi chamado.
abort
Este é um Error a ser lançado em Endpoint.getOptimisticResponse() para cancelar uma atualização otimista.