Maison > interface Web > js tutoriel > le corps du texte

Récupération asynchrone dans Svelte 5

Patricia Arquette
Libérer: 2024-11-19 10:27:02
original
892 Les gens l'ont consulté

Async Fetching in Svelte 5

Lorsque vous souhaitez récupérer quelque chose dans Svelte, la méthode recommandée est de le mettre dans la fonction de chargement.

J'ai écrit un article sur la récupération asynchrone et pourquoi cela pourrait être important de travailler en dehors de la fonction de chargement.

De manière générale, lorsque SSR n'est pas impliqué, vous avez un meilleur contrôle des conditions de concurrence, de la gestion des erreurs et de la mise en œuvre en dehors de la fonction de chargement. Bien que je sois d'accord dans la PLUPART des situations, vous devriez utiliser les fonctions de chargement (avec SvelteKit), ce n'est pas vrai pour TOUTES les situations.

Voici une fonction de ressource simple pour gérer cela :

// resource.svelte.ts

export let resource = <T>(
    fn: () => Promise<T>,
    initialValue?: T
) => {

    const _rune = $state<{ value: T | undefined }>({
        value: initialValue
    });

    $effect(() => {
        fn().then((data) => {
            _rune.value = data;
        });
    });

    return _rune;
};
Copier après la connexion

Et vous l'utiliseriez ainsi dans votre composant :

import { resource } from '$lib/resource.svelte';
...
const todo = resource<Todo>(() =>
  fetch(`https://jsonplaceholder.typicode.com/todos/${id}`)
    .then((response) => response.json())
);
Copier après la connexion

Et affichez la valeur avec :

{todo.value}
Copier après la connexion

Concepts similaires dans d'autres cadres

  • Réagir à la requête
  • Montre Vue
  • SolidJS créerResource
  • Qwik useResource$
  • Ressource angulaire 19
  • ngxtension dérivéAsync

Vous pouvez désormais facilement créer un signal à partir d'une ressource asynchrone ! J'espère que quelque chose comme ça pourra être implémenté dans Svelte comme $resource un jour.

Démo : Vercel
Repo : GitHub

J

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal