Capacités courantes
L'objet contexte fournit les capacités intégrées de NocoBase. Cependant, certaines ne sont disponibles que dans le Plugin, d'autres uniquement dans les composants, et d'autres encore existent des deux côtés mais avec des syntaxes différentes. Vue d'ensemble :
Détaillons par namespace.
Requêtes API (ctx.api)
ctx.api.request() appelle les API back-end avec une utilisation identique à Axios.
Dans le Plugin
Dans un composant
Avec ahooks useRequest
Dans un composant, vous pouvez utiliser useRequest d'ahooks pour simplifier la gestion des états de requête :
Intercepteurs de requêtes
ctx.api.axios permet d'ajouter des intercepteurs de requête/réponse, généralement configurés dans load() du Plugin :
En-têtes de requête personnalisés NocoBase
Le serveur NocoBase prend en charge les en-têtes personnalisés suivants, généralement injectés automatiquement par les intercepteurs et qu'il n'est pas nécessaire de définir à la main :
Internationalisation (ctx.t / ctx.i18n)
Les plugins NocoBase gèrent leurs fichiers multilingues via le répertoire src/locale/, et utilisent ctx.t() pour récupérer les traductions dans le code.
Fichiers multilingues
Sous src/locale/ du plugin, créez un fichier JSON par langue :
L'ajout initial des fichiers de langue nécessite un redémarrage de l'application pour prendre effet.
ctx.t()
Dans un composant, ctx.t() renvoie le texte traduit :
this.t()
Dans le Plugin, this.t() est plus pratique — il injecte automatiquement le nom du package du plugin comme namespace, sans avoir à passer ns à la main :
ctx.i18n
ctx.i18n est l'instance i18next sous-jacente. En général, ctx.t() suffit. Mais si vous devez changer de langue dynamiquement ou écouter les changements de langue, utilisez ctx.i18n :
tExpr()
tExpr() génère une chaîne d'expression de traduction différée, généralement utilisée dans FlowModel.define() — car define s'exécute au chargement du module, sans instance i18n disponible :
Pour des utilisations d'internationalisation plus complètes (écriture des fichiers de traduction, hook useT, tExpr, etc.), voir Internationalisation i18n. Liste complète des codes de langue supportés par NocoBase : Liste des langues.
Logs (ctx.logger)
ctx.logger produit des logs structurés, basés sur pino.
Dans le Plugin
Dans un composant
Niveaux de log du plus haut au plus bas : fatal > error > warn > info > debug > trace. Seuls les logs supérieurs ou égaux au niveau configuré sont émis.
Routes (ctx.router / ctx.route / ctx.location)
Les capacités liées aux routes se divisent en trois parties : enregistrement (Plugin uniquement), navigation et récupération d'informations (composant uniquement).
Enregistrement de routes (this.router / this.pluginSettingsManager)
Dans load() du Plugin, enregistrez les routes de page via this.router.add() et les pages de configuration de plugin via this.pluginSettingsManager :
Voir Router pour les détails. Exemple complet de page de configuration : Faire une page de configuration de plugin.
this.router est le RouterManager, utilisé pour enregistrer des routes. this.pluginSettingsManager est le PluginSettingsManager, utilisé pour enregistrer la page de configuration. Les deux ne sont pas la même chose que ctx.router (React Router, utilisé pour la navigation) dans les composants.
Navigation (ctx.router)
Dans un composant, naviguez via ctx.router.navigate() :
Informations de route (ctx.route)
Dans un composant, récupérez les informations de la route courante via ctx.route :
Type complet de ctx.route :
URL courante (ctx.location)
ctx.location fournit les détails de l'URL courante, similaire à window.location du navigateur :
ctx.route et ctx.location sont aussi accessibles via this.context dans le Plugin, mais l'URL au moment du chargement du plugin est indéterminée et la valeur n'a pas de sens. Il est recommandé de les utiliser dans les composants.
Gestion des vues (ctx.viewer / ctx.view)
ctx.viewer permet d'ouvrir des boîtes de dialogue, des tiroirs, etc. de façon impérative. Disponible aussi bien dans le Plugin que dans les composants.
Dans le Plugin
Dans un composant
Méthode générique
Manipuler la vue depuis l'intérieur (ctx.view)
Dans un composant à l'intérieur d'une boîte de dialogue ou d'un tiroir, vous pouvez manipuler la vue courante (par exemple la fermer) via ctx.view :
FlowEngine (this.flowEngine)
this.flowEngine est l'instance FlowEngine, disponible uniquement dans le Plugin. On l'utilise généralement pour enregistrer des FlowModel :
FlowModel est le cœur du système de configuration visuelle de NocoBase — si votre composant doit apparaître dans le menu « Ajouter un bloc / champ / action », il faut l'encapsuler avec FlowModel. Voir FlowEngine pour les détails.
Autres capacités
Les capacités suivantes peuvent être utiles dans des scénarios plus avancés ; les voici brièvement listées :
Pour les détails, voir Documentation complète FlowEngine.
Liens connexes
- Aper çu du Context — points communs et différences entre les deux entrées de contexte
- Plugin — raccourcis du Plugin
- Développement de composants Component — utilisation de useFlowContext dans les composants
- Router — enregistrement et navigation
- Documentation complète FlowEngine — référence complète FlowEngine
- Internationalisation i18n — écriture des fichiers de traduction, tExpr, useT
- Liste des langues — codes de langue supportés par NocoBase
- Faire une page de configuration de plugin — exemple complet d'utilisation de ctx.api
- Aperçu de FlowEngine — utilisation de base de FlowModel

