Utilisation de la propriété type

Créons l'entrée la plus simple possible - une qui ne produit que "Hello world".

Charger l'exemple en direct

Même si cet exemple simpliste ne contient aucun mécanisme d'entrée/sortie, il est toujours considéré comme une entrée complète. Il peut avoir une valeur, exécuter des règles de validation (elles ne seront pas affichées, mais elles peuvent bloquer les soumissions de formulaires), et exécuter des plugins. Fondamentalement, toutes les entrées sont des nœuds de base et la définition de l'entrée fournit les mécanismes pour interagir avec ce nœud.

Entrées personnalisées globales

Pour utiliser votre entrée personnalisée n'importe où dans votre application via une chaîne "type" (ex : <FormKit type="foobar" />) vous pouvez ajouter une propriété inputs aux options defaultConfig. Les noms des propriétés de l'objet inputs deviennent les chaînes "type" disponibles pour le composant <FormKit> dans votre application.

import { createApp } from 'vue'
import App from 'App.vue'
import { plugin, defaultConfig } from '@formkit/vue'

const helloWorld = {
  type: 'input',
  schema: ['Hello world'],
}

createApp(App)
  .use(
    plugin,
    defaultConfig({
      inputs: {
        // La propriété sera le “type” dans <FormKit type="hello">
        hello: helloWorld,
      },
    })
  )
  .mount('#app')

Maintenant que nous avons défini notre entrée, nous pouvons l'utiliser n'importe où dans l'application :

Charger l'exemple en direct

Bibliothèques de plugins

L'exemple ci-dessus étend la bibliothèque @formkit/inputs (via defaultConfig). Cependant, une fonctionnalité puissante de FormKit est sa capacité à charger des bibliothèques d'entrées à partir de plusieurs plugins. Ces entrées peuvent ensuite être enregistrées n'importe où les plugins peuvent être définis :

  • Globalement
  • Par groupe
  • Par formulaire
  • Par liste
  • Par entrée

Refactorisons notre entrée hello world pour utiliser son propre plugin :

Charger l'exemple en direct
Héritage de plugin

Remarquez dans l'exemple ci-dessus que notre plugin a été défini sur un parent de l'élément qui l'a réellement utilisé ! C'est grâce à l'héritage de plugin — une fonctionnalité de base des plugins FormKit.

Schéma vs composant

Votre entrée peut être écrite en utilisant le schéma de FormKit ou un composant Vue générique. Chaque approche a ses avantages et ses inconvénients :

CodeAvantagesInconvénients
Vue
  • Courbe d'apprentissage (vous savez probablement comment écrire un composant Vue).
  • Outils de développement plus matures.
  • Rendu initial légèrement plus rapide.
  • Impossible d'utiliser la propriété :sections-schema pour modifier la structure.
  • Les plugins ne peuvent pas modifier le schéma pour changer la sortie rendue.
  • Spécifique au framework (Vue uniquement).
  • Facile d'écrire des entrées qui ne s'intègrent pas bien avec l'écosystème FormKit.
Schema
  • La structure peut être modifiée via la propriété :sections-schema (si vous le permettez).
  • Les plugins peuvent modifier/changer la sortie rendue.
  • Indépendant du framework (portabilité future lorsque FormKit prendra en charge de nouveaux frameworks).
  • Compatibilité avec l'écosystème (idéal pour publier vos propres entrées open source).
  • Courbe d'apprentissage (besoin de comprendre les schémas).
  • Rendu initial légèrement plus lent.
  • Outils de développement moins matures.
Composants dans les schémas

Même si vous préférez écrire une entrée personnalisée en utilisant un composant Vue standard, vous pouvez toujours utiliser un schéma dans votre définition d'entrée. Veuillez lire la section Utilisation de createInput pour étendre le schéma de base.

La principale conclusion est que si vous prévoyez d'utiliser une entrée personnalisée sur plusieurs projets - alors envisagez d'utiliser l'approche basée sur le schéma. Si votre entrée personnalisée ne sera utilisée que sur un seul projet et que la flexibilité n'est pas une préoccupation, utilisez un composant Vue.