EnglishBac à sable

Les données asynchrones

Une ressource enveloppe une donnée asynchrone — un fetch, une requête, tout ce qui renvoie une promesse — dans une valeur qui suit son état de chargement et d'erreur :

import { signal, resource } from '@fluixi/reactive/signal';

const userId = signal(1);

const user = resource(userId, async (id) => {
  const res = await fetch(`/api/users/${id}`);
  return res.json();
});

Le premier argument est une source réactive ; à chaque changement, le fetcher se ré-exécute avec la nouvelle valeur. Omettez-le pour ne charger qu'une fois.

Chargement et erreur

L'accesseur de la ressource porte son état, pour que votre interface y réagisse :

user.loading; // vrai pendant le chargement
user.error;   // l'erreur levée, le cas échéant
user();       // la valeur résolue (suspend tant qu'en attente)

Rendu côté serveur

Sur le serveur, Fluixi attend les ressources avant de sérialiser le HTML, puis injecte la valeur résolue dans la page : le client s'hydrate sans recharger — aucun clignotement, aucune cascade.

// le même code s'affiche sur le serveur (attendu) et le client (streamé) :
const posts = $resource(fetchPosts);

C'est la fin du guide de réactivité pour la v1. Explorez-le en direct dans le Bac à sable.