DataResourceOptions
interfaz Desde 1.5.0
Opciones de recarga de useApi y useRpcQuery: su último argumento, después de las opciones de
la petición o de la entrada.
import type { DataResourceOptions } from "@meekojs/meeko/framework";Código fuente src/app/composables/resources/engine.ts:112
Declaración #
interface DataResourceOptions {
readonly keepPrevious?: boolean
readonly debounceMs?: number
readonly enabled?: boolean | ReadonlySignal<boolean> | (() => boolean)
}Ejemplo #
<script lang="ts">
const props = defineProps<{ params: { id: string }; search: Record<string, string | string[]> }>();
// Al cambiar de usuario, data vuelve a null en lugar de mostrar el anterior mientras carga.
const user = useApi("/api/users/[id]", () => ({ params: { id: props.params.id } }), { keepPrevious: false });
// Por defecto, data conserva la página anterior mientras llega la siguiente.
const page = signal("1");
const list = useApi("/api/users", { query: { page } });
// Desde 1.7: una petición cuando se deja de escribir, y ninguna con menos de dos letras.
const q = signal("");
const hits = useRpcQuery("docs.search", () => ({ q: q.value }), { debounceMs: 200, enabled: () => q.value.length >= 2 });
</script>
<template><p if:when="list.refreshing.value">Actualizando…</p></template>Propiedades #
keepPrevious
#
readonly keepPrevious?: booleanSi data conserva el valor anterior cuando cambia la entrada (sus señales) mientras llegan los
datos nuevos, con pending y refreshing en true. Por defecto true, como hasta 1.4.
Con false, un cambio de la entrada vacía data y error y vuelve a ser una primera carga
(pending sin refreshing). refresh() conserva siempre los datos, y un recurso esperado con
await, cuyo data nunca es null, también.
debounceMs
#
readonly debounceMs?: numberMilisegundos que la entrada debe quedarse quieta antes de pedir los datos (desde 1.7), como en
una búsqueda mientras se escribe: una ráfaga de cambios hace una sola petición, con la última
entrada. Cada cambio cancela la petición en curso. Durante la espera pending vale true y
data conserva el resultado anterior, salvo con keepPrevious: false. No retrasa la primera
carga, refresh() ni el SSR, que pide los datos de un await enseguida para hidratar.
enabled
#
readonly enabled?: boolean | ReadonlySignal<boolean> | (() => boolean)Si se piden los datos (desde 1.7): un booleano, una señal o una función que lee señales, como
() => query.value.length >= 2. Mientras vale false no hay petición (tampoco con
refresh()), la que estaba en curso se cancela, pending vale false y data conserva el
último resultado, o null si no lo hubo. Al volver a true se piden los datos de la entrada
actual, salvo que data ya sea de esa entrada. Un recurso con await no puede empezar
desactivado.
Véase también #
- Datos anteriores durante una recarga: keepPrevious Framework full-stack
- Búsqueda mientras se escribe: debounceMs y enabled Framework full-stack