Je travaille à apporter la fonctionnalité de Vue.js dans l'écosystème WordPress, et mon premier projet concerne la recherche et le filtrage sur une page.
Comme le site Web principal est initiallement rendu par WordPress avec PHP/HTML, j'ai initialisé Vue sur la page en le reliant à un élément HTML que j'ai généré avec WordPress. Tout fonctionne parfaitement bien, mais maintenant j'essaie d'aller plus loin en ayant plusieurs instances du même code (qui peuvent fonctionner ensemble).
Prenez cet exemple de capture d'écran de Indeed (imaginons que c'est un site WordPress) :
Comme la sortie entière n'est pas faite en Vue.js, je dois générer plusieurs éléments HTML DIV du côté de WordPress, et initialiser Vue sur eux.
Étant donné que le formulaire/les champs seront générés dynamiquement en fonction de la configuration/l'installation de l'utilisateur, la même base de code serait utilisée pour les deux instances... mais je dois d'une manière ou d'une autre les faire fonctionner ensemble de concert, pour par exemple mettre à jour les résultats sur la page lorsqu'une valeur est sélectionnée ou modifiée dans l'une des instances.
L'idée ici est que dans mon fichier JS principal utilisant du javascript pur, je détecte tous mes éléments HTML spécifiques qui existent sur la page (peut-être même définir un slug pour chacun dans un objet de données), puis je fais une boucle foreach pour initialiser un new Vue()
sur chaque instance.
Ma première idée est d'utiliser le stockage Vuex, en attachant le stockage unique à toutes les instances, en mémorisant les valeurs sélectionnées, et en déclenchant une action pour mettre à jour les listes lorsque l'une d'elles change.
Est-ce que quelqu'un a déjà fait quelque chose de similaire auparavant? Y a-t-il quelque chose dont je devrais me méfier en le faisant? ou quelqu'un aurait-il de meilleures suggestions sur la manière dont cela devrait être fait?
Je me suis dit qu'il serait préférable de poser la question ici plutôt que d'apprendre par l'expérience et de découvrir plus tard que cela pourrait ne pas être possible, ou qu'il y aurait des problèmes à le faire.
Toutes suggestions, commentaires, critiques ou idées sont grandement appréciés.
mise à jour J'ai reçu une suggestion de simplement lier l'instance Vue au body, supprimer la fonction render
, puis simplement générer l'élément HTML du composant là où c'est nécessaire (au lieu de générer un div puis de s'y attacher). Je vais tester cela, mais je suis curieux de connaître votre opinion à ce sujet ?