Comment utiliser vuex pour implémenter la gestion des menus
Cet article présente principalement l'explication détaillée de l'utilisation de vuex pour la gestion des menus. Maintenant, je le partage avec vous et le donne comme référence.
Les avantages de vuex ne peuvent être réalisés que dans une gestion d'état complexe.
S'il y a plusieurs niveaux de menus dans le projet et que plusieurs menus du même niveau sont dispersés dans différents composants, il n'y aura qu'un seul point culminant de chaque niveau du menu en même temps dans le projet. Lorsque le menu saute, en plus du changement de routage, le menu correspondant doit également être mis en surbrillance (précédemment restauré à l'état non mis en surbrillance). C'est un scénario parfait pour utiliser vuex.
Utilisez les opérations DOM pour une gestion simple des menus
Utilisez DOM pour la gestion des menus L'idée derrière cela est la suivante : lorsque vous cliquez sur le menu, l'objet événement est transmis au fichier. gestionnaire d'événements, vous souhaitez que le menu actuellement en surbrillance ne soit pas mis en surbrillance, puis que le menu sur lequel vous avez cliqué soit mis en surbrillance.
<p class="menu-url"> <span class="active userList" @click="menuClicked($event, 'userList')">注册</span> <span class="chargeList" @click="menuClicked($event, 'chargeList')">充值</span> <span class="buyList" @click="menuClicked($event, 'buyList')">购买</span> <span class="bangList" @click="menuClicked($event, 'bangList')">到期</span> <span class="withDrawList" @click="menuClicked($event, 'withDrawList')">提现</span> </p>
menuClicked (event, url) { // 当前高亮的 menu 非高亮 const currentActiveLink = this.querySelector('.active'); currentActiveLink.classList.remove('active'); // 当前点击的 menu 高亮 event.target.classList.add('active'); // 路由跳转 this.$router.push(`/panel/list/${url}`); },
Bien que le menu soit mis en surbrillance lorsque vous cliquez pour basculer, il y a un bug : chaque initialisation mettra le menu par défaut en surbrillance. Si le menu n'est pas mis en surbrillance par défaut à ce moment-là, dans le menu. menu, l'utilisateur actualise manuellement la page, ce qui entraînera des erreurs de mise en surbrillance du menu (par exemple, après avoir actualisé la page sur la page de liste d'achat, le contenu de la page reste toujours sur la liste d'achat, mais le menu en surbrillance devient une liste d'utilisateurs).
Si vous souhaitez résoudre ce bug, vous devez stocker l'état du menu localement (l'actualisation ne modifie pas l'état de stockage. Vous pouvez choisir différentes solutions pour le stockage local, qui ne seront pas abordées ici, mais cela). est certainement DOM + stockage local. Le schéma de contrôle de la mise en évidence des menus deviendra difficile à maintenir à mesure que le projet grandit.
Il est maintenant temps pour vuex d'entrer en scène.
Utiliser vuex pour la gestion des menus
Utiliser vuex pour la gestion des menus nécessite 在开发前就规划好菜单的层级
afin d'attribuer state
et mutations
dans vuex.
Niveau de planification
Déterminer quels menus du projet sont des menus de premier niveau, lesquels sont des menus de deuxième niveau, et ainsi de suite... Il est à noter ici que afin de simplifier le opération, les menus du même niveau sont étiquetés avec un nom différent afin que dans vuex vous n'ayez pas besoin de faire attention à la page à laquelle appartient le menu, faites simplement attention au statut. Le niveau de menu est généralement le suivant :
|-root | | | |-first-menu1 | | |- second-menu1 | | |- second-menu2 | | |- second-menu3 | | | |-first-menu2 | |- second-menu3 | |- second-menu4 | |- second-menu5
Attribuer un "état" et des "mutations" dans vuex
Les menus à différents niveaux occupent respectivement un "état", comme pour les « mutations », dans cet exemple, une « mutation » est écrite pour chaque « état » différent. Dans le travail réel, afin de réduire la réutilisation du code, vous ne pouvez écrire qu'une seule « mutation » pour la gestion des états du menu. , et déterminez lequel doit être modifié en passant les paramètres Niveau et menu correspondant.
A noter que l'état de vuex sera réinitialisé après le rafraîchissement de la page, ce qui est évidemment incohérent avec les fonctions nécessaires à la gestion du menu (hormis le déclenchement actif, les autres opérations ne peuvent pas affecter le menu ). Vous pouvez modifier le cycle de vie par défaut de vuex via vuex-persistedstate. L'exemple de code suivant stocke l'état de vuex dans un cookie :
js
const store = new Vuex.Store({ state: { // 初始化 activeFirstMenu: 'firstMenu1', activeSecondMenu : 'secondMenu1', }, mutations: { // 更改一级菜单 changeFirstActiveMenu (state, menu) { state.activeFirstMenu = menu; }, // 更改二级二级菜单 changeSecondActiveMenu (state, menu) { state.activeSecondMenu = menu; } }, });
Rendu dans le composant<. 🎜>
Le chargement dynamique de la classe en surbrillance dans le modèle est contrôlé par l'état dans vuex :<p class="subMenu"> <span :class="{ activeSecondMenu: activeMenu.secondMenu1 }" @click="menuClicked('secondMenu1')">secondMenu1</span> </p> <p class="subMenu"> <span :class="{ activeSecondMenu: activeMenu.secondMenu2 }" @click="menuClicked('secondMenu2')">secondMenu2</span> </p> <p class="subMenu"> <span :class="{ activeSecondMenu: activeMenu.secondMenu3 }" @click="menuClicked('secondMenu3')">secondMenu3</span> </p>
data () { return { // 初始化 activeMenu: { // menu 名称相同,和对应路由的 path 相同 secondMenu1: '', secondMenu2: '', secondMenu3: '', }, }; }, computed: { activeMenuName () { // 检测 vuex 中 activeSecondMenu 的变化 return this.$store.state.activeSecondMenu; } }, methods: { menuClicked(path) { // 取消当前 tab 高亮 this.activeMenu[this.activeMenuName] = false; // 更新 vuex 状态及 menu 高亮 this.$store.commit("changeSecondActiveMenu", path); this.activeMenu[this.activeMenuName] = true; // 路由跳转 path 和对应 menu 名称相同 this.$router.push(`/somePath/${path}`); }, init () { // 刷新页面重置正确高亮菜单tab this.activeMenu[this.activeMenuName] = true; }, }, mounted: { this.init(); },
Autres
Optimisation pour vuex
Comme mentionné ci-dessus, afin d'obtenir une plus grande réutilisation du code dans le travail réel, vous ne pouvez écrire qu'une seule mutation pour une certaine catégorie de gestion de l'état et déterminer le contenu du changement en passage des paramètres (Payload). En prenant comme exemple la gestion des menus, l'optimisation suivante peut être effectuée : L'optimisation vuex est la suivante :const store = new Vuex.Store({ // 其他代码略 mutations: { // 优化后代码,合并 changeFirstActiveMenu 和 changeSecondActiveMenu changeActiveMenu (state, menuInfo) { state[menuInfo.menuHierarchy] = menuInfo.name; } } });
methods: { menuClicked(path) { // 其他代码略高亮 // 优化后代码:更改一级和二级菜单触发同个 mutation this.$store.commit("changeActiveMenu", { menuHierarchy: 'activeFirstMenu', name: path, }); this.$store.commit("changeActiveMenu", { menuHierarchy: 'activeSecondMenu', name: path, }); // 其他代码略 }, },
Comment éviter les rendus répétés à l'aide de React
Comment implémenter la fonction de disposition en grille à l'aide de vue
Introduction détaillée à l'ajout de la fonction glisser-déposer à Modal dans Bootstrap
Comment obtenir un effet de prévisualisation dans JS
Utilisez Créer un projet avec three.js
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans Windows 11, le menu Démarrer a été repensé et propose un ensemble simplifié d'applications disposées dans une grille de pages, contrairement à son prédécesseur, qui comportait des dossiers, des applications et des applications dans le groupe du menu Démarrer. Vous pouvez personnaliser la disposition du menu Démarrer, l'importer et l'exporter vers d'autres appareils Windows pour la personnaliser à votre guise. Dans ce guide, nous discuterons des instructions étape par étape pour importer la disposition de démarrage afin de personnaliser la disposition par défaut sur Windows 11. Qu’est-ce qu’Import-StartLayout dans Windows 11 ? Import Start Layout est une applet de commande utilisée dans Windows 10 et les versions antérieures pour importer les personnalisations du menu Démarrer dans

L'un des changements les plus ennuyeux dont nous, les utilisateurs, ne souhaitons jamais est l'inclusion de « Afficher plus d'options » dans le menu contextuel du clic droit. Cependant, vous pouvez le supprimer et récupérer le menu contextuel classique dans Windows 11. Fini les clics multiples et la recherche de ces raccourcis ZIP dans les menus contextuels. Suivez ce guide pour revenir à un menu contextuel complet par clic droit sur Windows 11. Correctif 1 – Ajuster manuellement le CLSID Il s’agit de la seule méthode manuelle de notre liste. Vous ajusterez des clés ou des valeurs spécifiques dans l'Éditeur du Registre pour résoudre ce problème. Remarque – Les modifications du registre comme celle-ci sont très sûres et fonctionneront sans aucun problème. Par conséquent, vous devez créer une sauvegarde du registre avant d’essayer cela sur votre système. Étape 1 – Essayez-le

Par défaut, le menu contextuel du clic droit de Windows 11 comporte une option appelée Ouvrir dans le terminal Windows. Il s'agit d'une fonctionnalité très utile qui permet aux utilisateurs d'ouvrir le terminal Windows à un emplacement spécifique. Par exemple, si vous cliquez avec le bouton droit sur un dossier et sélectionnez l'option « Ouvrir dans le terminal Windows », le terminal Windows se lancera et définira cet emplacement spécifique comme répertoire de travail actuel. Bien qu’il s’agisse d’une fonctionnalité géniale, tout le monde ne trouve pas son utilité. Certains utilisateurs peuvent tout simplement ne pas vouloir cette option dans leur menu contextuel du clic droit et souhaiter la supprimer pour ranger leur menu contextuel du clic droit.

Les étapes pour implémenter une barre de navigation dans les menus avec effet d'ombre en utilisant du CSS pur nécessitent des exemples de code spécifiques. Dans la conception Web, la barre de navigation dans les menus est un élément très courant. En ajoutant un effet d'ombre à la barre de navigation du menu, vous pouvez non seulement augmenter son esthétique, mais également améliorer l'expérience utilisateur. Dans cet article, nous utiliserons du CSS pur pour implémenter une barre de navigation de menu avec un effet d'ombre et fournirons des exemples de code spécifiques pour référence. Les étapes d'implémentation sont les suivantes : Créer une structure HTML Tout d'abord, nous devons créer une structure HTML de base pour accueillir la barre de navigation des menus. par
![Comment résoudre le problème « Erreur : [vuex] type d'action inconnu : xxx » lors de l'utilisation de vuex dans une application Vue ?](https://img.php.cn/upload/article/000/887/227/168766615217161.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Dans les projets Vue.js, vuex est un outil de gestion d'état très utile. Il nous aide à partager l'état entre plusieurs composants et fournit un moyen fiable de gérer les changements d'état. Mais lorsque vous utilisez vuex, vous rencontrerez parfois l'erreur "Erreur : [vuex]unknownactiontype:xxx". Cet article expliquera la cause et la solution de cette erreur. 1. Cause de l'erreur Lors de l'utilisation de vuex, nous devons définir certaines actions et mu
![Comment résoudre le problème « Erreur : [vuex] ne mute pas l'état du magasin vuex en dehors des gestionnaires de mutation lors de l'utilisation de vuex dans une application Vue ?](https://img.php.cn/upload/article/000/000/164/168760467048976.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Dans les applications Vue, l'utilisation de vuex est une méthode courante de gestion d'état. Cependant, lors de l'utilisation de vuex, nous pouvons parfois rencontrer un tel message d'erreur : "Erreur : [vuex]donotmutatevuexstorestateoutsidemutationhandlers." Que signifie ce message d'erreur ? Pourquoi ce message d'erreur apparaît-il ? Comment corriger cette erreur ? Cet article abordera ce problème en détail. Le message d'erreur contient

Vue2.x est actuellement l'un des frameworks frontaux les plus populaires, qui fournit Vuex comme solution pour gérer l'état global. L'utilisation de Vuex peut rendre la gestion des états plus claire et plus facile à maintenir. Les meilleures pratiques de Vuex seront présentées ci-dessous pour aider les développeurs à mieux utiliser Vuex et à améliorer la qualité du code. 1. Utilisez l'état d'organisation modulaire. Vuex utilise une seule arborescence d'état pour gérer tous les états de l'application, extrayant l'état des composants, rendant la gestion des états plus claire et plus facile à comprendre. Dans les applications avec beaucoup d'états, des modules doivent être utilisés

L'application native Messages sur iPhone vous permet de modifier facilement les textes envoyés. De cette façon, vous pouvez corriger vos erreurs, votre ponctuation et même corriger automatiquement les mauvaises expressions/mots qui ont pu être appliqués à votre texte. Dans cet article, nous apprendrons comment modifier des messages sur iPhone. Comment modifier des messages sur iPhone Requis : iPhone exécutant iOS16 ou version ultérieure. Vous ne pouvez modifier le texte iMessage que sur l'application Messages, et seulement dans les 15 minutes suivant l'envoi du texte original. Le texte non iMessage n’est pas pris en charge, il ne peut donc pas être récupéré ou modifié. Lancez l'application Messages sur votre iPhone. Dans Messages, sélectionnez la conversation à partir de laquelle vous souhaitez modifier le message
