Docs Fluixi

Les données asynchrones

Une ressource enveloppe une donnée asynchrone — un fetch, une requête, tout ce qui renvoie une promesse — dans un signal qui suit son état de chargement et d'erreur. Créez-en une avec createResource :

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

const [userId, setUserId] = createSignal(1);

const [user] = createResource(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] = createResource(fetchPosts);

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