Saltar al contenido principal

Snapshot

Los snapshots se pasan a las funciones definidas por el usuario que se usan para calcular actualizaciones de estado. Estos permiten un acceso seguro y eficiente a los datos desnormalizados según el estado actual.

interface Snapshot {
get(schema, ...args)​ => DenormalizeNullable<typeof schema> | undefined;
getResponse(endpoint, ...args)​ => { data, expiryStatus, expiresAt };
getError(endpoint, ...args)​ => ErrorTypes | undefined;
fetchedAt: number;
abort: Error;
}
consejo

Usa Controller.snapshot() para construir un 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,
    };
  },
});

Miembros​

get(schema, ...args)​

Busca cualquier Schema Queryable.

getResponse(endpoint, ...args)​

returns
{
data: DenormalizeNullable<E['schema']>;
expiryStatus: ExpiryStatus;
expiresAt: number;
}

Obtiene la respuesta (globalmente estable por referencia) para un par endpoint/args dado a partir del estado indicado.

data​

Los datos de la respuesta desnormalizados. Garantiza estabilidad referencial global para todos sus miembros.

expiryStatus​

export enum ExpiryStatus {
Invalid = 1,
InvalidIfStale,
Valid,
}

Los componentes de Vue solo se suspenden durante el montaje; los componentes ya montados siguen mostrando sus datos mientras se vuelven a obtener.

Valid​
  • Nunca se suspenderá.
  • Podría hacer fetch si los datos están obsoletos
InvalidIfStale​
  • Se suspenderá si los datos están obsoletos.
  • Podría hacer fetch si los datos están obsoletos
Invalid​
  • Siempre se suspenderá
  • Siempre hará fetch

expiresAt​

Un número que representa el momento en que expira. Compáralo con Date.now().

getError(endpoint, ...args)​

Obtiene el error, si lo hay, de un endpoint dado. Devuelve undefined si no hay errores.

fetchedAt​

Momento en que se llamó al fetch que dio lugar a este snapshot.

abort​

Este es un Error que se lanza en Endpoint.getOptimisticResponse() para cancelar una actualización optimista.