Fonction de Récupération
Intlayer vous permet de déclarer des fonctions de contenu dans vos modules de contenu, qui peuvent être synchrones ou asynchrones. Lorsque l'application se construit, Intlayer exécute ces fonctions pour obtenir le résultat de la fonction. La valeur de retour doit être un objet JSON ou une valeur simple comme une chaîne de caractères ou un nombre.
Attention : la récupération de fonction n'est actuellement pas disponible dans les déclarations de contenu JSON et les fichiers de déclarations de contenu distants.
Déclarations de Fonction
Voici un exemple d'une fonction synchrone simple récupérant du contenu :
import type { Dictionary } from "intlayer";const functionContent = { key: "function_content", content: { text: () => "Ceci est le contenu rendu par une fonction", },} satisfies Dictionary;export default functionContent;
Dans cet exemple, la clé text contient une fonction qui retourne une chaîne de caractères. Ce contenu peut être rendu dans vos composants React en utilisant les packages interpréteurs d'Intlayer comme react-intlayer.
Récupération Asynchrone de Fonction
En plus des fonctions synchrones, Intlayer prend en charge les fonctions asynchrones, vous permettant de récupérer des données à partir de sources externes ou de simuler la récupération de données avec des données fictives.
Voici un exemple d'une fonction asynchrone qui simule une récupération depuis un serveur :
import { setTimeout } from "node:timers/promises";import type { Dictionary } from "intlayer";const fakeFetch = async (): Promise<string> => { // Attendre 200ms pour simuler une récupération depuis le serveur return await setTimeout(200).then( () => "Ceci est le contenu récupéré depuis le serveur" );};const asyncFunctionContent = { key: "async_function", content: { text: fakeFetch },} satisfies Dictionary;export default asyncFunctionContent;
Dans ce cas, la fonction fakeFetch imite un délai pour simuler le temps de réponse du serveur. Intlayer exécute la fonction asynchrone et utilise le résultat comme contenu pour la clé text.
Utilisation de Contenu Basé sur des Fonctions dans des Composants React
Pour utiliser du contenu basé sur des fonctions dans un composant React, vous devez importer useIntlayer depuis react-intlayer et l'appeler avec l'ID de contenu pour récupérer le contenu. Voici un exemple :
import type { FC } from "react";import { useIntlayer } from "react-intlayer";const MyComponent: FC = () => { const functionContent = useIntlayer("function_content"); const asyncFunctionContent = useIntlayer("async_function_content"); return ( <div> <p>{functionContent.text}</p> {/* Sortie : Ceci est le contenu rendu par une fonction */} <p>{asyncFunctionContent.text}</p> {/* Sortie : Ceci est le contenu récupéré depuis le serveur */} </div> );};export default MyComponent;
Si vous avez une idée d’amélioration pour améliorer cette documentation, n’hésitez pas à contribuer en submitant une pull request sur GitHub.
Lien GitHub de la documentation