So implementieren Sie die Menüverwaltung mit Vuex
Dieser Artikel stellt hauptsächlich die detaillierte Erklärung der Verwendung von Vuex für die Menüverwaltung vor. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.
Die Vorteile von vuex können nur im komplexen Zustandsmanagement realisiert werden.
Wenn es im Projekt mehrere Menüebenen gibt und mehrere Menüs derselben Ebene in verschiedenen Komponenten verstreut sind, gibt es im Projekt gleichzeitig nur eine Hervorhebung jeder Menüebene. Wenn das Menü springt, muss neben der Routing-Änderung auch das entsprechende Menü hervorgehoben werden (zuvor in den nicht hervorgehobenen Zustand zurückversetzt werden). Dies ist ein perfektes Szenario für die Verwendung von Vuex.
Verwenden Sie DOM-Operationen für die einfache Menüverwaltung
Verwenden Sie DOM für die Menüverwaltung. Die Idee dahinter ist: Wenn auf das Menü geklickt wird, wird das Ereignisobjekt an das übergeben Event-Handler möchten Sie, dass das aktuell hervorgehobene Menü nicht hervorgehoben wird und dann das angeklickte Menü hervorgehoben wird.
<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>
Obwohl dadurch die Menühervorhebung beim Klicken zum Wechseln erreicht wird, gibt es einen Fehler: Bei jeder Initialisierung wird das Standardmenü hervorgehoben. Wenn der Benutzer das nicht standardmäßig hervorgehobene Menü zu diesem Zeitpunkt manuell aktualisiert, wird dies dazu führen Fehler bei der Menühervorhebung (z. B. bleibt der Seiteninhalt nach dem Aktualisieren der Einkaufslistenseite weiterhin auf der Einkaufsliste, das hervorgehobene Menü wird jedoch zur Benutzerliste).
Wenn Sie diesen Fehler beheben möchten, müssen Sie den Menüstatus lokal speichern (das Aktualisieren ändert den Speicherstatus nicht). Sie können verschiedene Lösungen für die lokale Speicherung wählen, die hier jedoch nicht besprochen werden ist sicherlich DOM + lokaler Speicher. Das Schema zur Steuerung der Menühervorhebung wird schwieriger beizubehalten, wenn das Projekt größer wird.
Jetzt ist es an der Zeit, dass vuex auf den Plan tritt.
Verwendung von vuex für die Menüverwaltung
Die Verwendung von vuex für die Menüverwaltung erfordert 在开发前就规划好菜单的层级
, um state
und mutations
in vuex zuzuweisen.
Planungsebene
Bestimmen Sie, welche Menüs im Projekt Menüs der ersten Ebene, welche Menüs der zweiten Ebene usw. sind. Hier ist zu beachten, dass zur Vereinfachung die Bei der Bedienung werden Menüs auf derselben Ebene mit unterschiedlichen Namen beschriftet, sodass Sie in Vuex nicht darauf achten müssen, zu welcher Seite das Menü gehört, sondern nur auf den Status. Die Menüebene ist normalerweise wie folgt:
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}`); },
Zuweisen Sie „Zustand“ und „Mutationen“ in Vuex
Menüs auf verschiedenen Ebenen belegen jeweils einen „Zustand“. „Mutationen“, in diesem Beispiel entsprechen unterschiedliche „Zustände“ einer „Mutation“. Um die Wiederverwendung von Code zu reduzieren, kann in der tatsächlichen Arbeit nur eine „Mutation“ für die Statusverwaltung des Menüs geschrieben werden, und die Ebene und Der zu ändernde Pegel kann durch Parameterübergabe im entsprechenden Menü bestimmt werden.
Es ist zu beachten, dass der Status von Vuex nach der Aktualisierung der Seite neu initialisiert wird, was offensichtlich nicht mit den zum Verwalten des Menüs erforderlichen Funktionen vereinbar ist (mit Ausnahme der aktiven Auslösung können andere Vorgänge das Menü nicht beeinflussen). ). Sie können den Vuex-Standardlebenszyklus über vuex-persistedstate ändern. Der folgende Beispielcode speichert den Vuex-Status in einem Cookie:
js
|-root | | | |-first-menu1 | | |- second-menu1 | | |- second-menu2 | | |- second-menu3 | | | |-first-menu2 | |- second-menu3 | |- second-menu4 | |- second-menu5
Rendering in der Komponente
Laden Sie die hervorgehobene Klasse dynamisch in der Vorlage und steuern Sie sie über den Status in vuex:
const store = new Vuex.Store({ state: { // 初始化 activeFirstMenu: 'firstMenu1', activeSecondMenu : 'secondMenu1', }, mutations: { // 更改一级菜单 changeFirstActiveMenu (state, menu) { state.activeFirstMenu = menu; }, // 更改二级二级菜单 changeSecondActiveMenu (state, menu) { state.activeSecondMenu = menu; } }, });
Beim Schreiben von js gibt es einen Trick: Der Routing-Pfad und der entsprechende hervorgehobene Menüname sollten gleich sein , da das Routing von Sprüngen und das Hervorheben von Menüs in direktem Zusammenhang stehen, was einen Parameter reduzieren kann:
<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>
Andere
Optimierung von vuex
Wie oben besprochen: Um die Wiederverwendung von Code in der tatsächlichen Arbeit in größerem Umfang zu realisieren, können Sie nur eine Mutation für eine bestimmte Kategorie der Statusverwaltung schreiben und den Änderungsinhalt durch Übergabe von Parametern (Payload) bestimmen. Am Beispiel der Menüverwaltung kann die folgende Optimierung durchgeführt werden:
vuex wird wie folgt optimiert:
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(); },
Der Komponenten-JS-Teil wird wie folgt optimiert:
const store = new Vuex.Store({ // 其他代码略 mutations: { // 优化后代码,合并 changeFirstActiveMenu 和 changeSecondActiveMenu changeActiveMenu (state, menuInfo) { state[menuInfo.menuHierarchy] = menuInfo.name; } } });
The Oben habe ich alles zusammengestellt. Ich hoffe, es wird in Zukunft für alle hilfreich sein.
Verwandte Artikel:
So verhindern Sie wiederholtes Rendern mit React
So implementieren Sie die Grid-Layout-Funktion mit Vue
Detaillierte Einführung zum Hinzufügen der Drag-and-Drop-Funktion zu Modal in Bootstrap
So erzielen Sie einen Vorschaueffekt in JS
Verwenden Sie „Projekt mit three.js erstellen“
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Menüverwaltung mit Vuex. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In Windows 11 wurde das Startmenü neu gestaltet und verfügt über einen vereinfachten Satz von Apps, die in einem Seitenraster angeordnet sind, im Gegensatz zum Vorgänger, der Ordner, Apps und Apps im Startmenü hatte. Sie können das Startmenü-Layout anpassen und es auf andere Windows-Geräte importieren und exportieren, um es nach Ihren Wünschen zu personalisieren. In dieser Anleitung besprechen wir Schritt-für-Schritt-Anleitungen zum Importieren des Startlayouts, um das Standardlayout unter Windows 11 anzupassen. Was ist Import-StartLayout in Windows 11? „Startlayout importieren“ ist ein Cmdlet, das in Windows 10 und früheren Versionen zum Importieren von Anpassungen für das Startmenü verwendet wird

Eine der nervigsten Änderungen, die wir Benutzer nie wollen, ist die Aufnahme von „Weitere Optionen anzeigen“ in das Kontextmenü mit der rechten Maustaste. Sie können es jedoch entfernen und erhalten das klassische Kontextmenü in Windows 11 zurück. Kein Mehrfachklicken und Suchen nach diesen ZIP-Verknüpfungen in Kontextmenüs mehr. Befolgen Sie diese Anleitung, um unter Windows 11 zu einem vollständigen Kontextmenü mit der rechten Maustaste zurückzukehren. Fix 1 – CLSID manuell anpassen Dies ist die einzige manuelle Methode auf unserer Liste. Sie müssen bestimmte Schlüssel oder Werte im Registrierungseditor anpassen, um dieses Problem zu beheben. Hinweis – Registrierungsänderungen wie diese sind sehr sicher und funktionieren problemlos. Daher sollten Sie eine Sicherung der Registrierung erstellen, bevor Sie dies auf Ihrem System versuchen. Schritt 1 – Probieren Sie es aus

Standardmäßig verfügt das Kontextmenü von Windows 11 per Rechtsklick über eine Option namens „Im Windows-Terminal öffnen“. Dies ist eine sehr nützliche Funktion, die es Benutzern ermöglicht, Windows Terminal an einem bestimmten Ort zu öffnen. Wenn Sie beispielsweise mit der rechten Maustaste auf einen Ordner klicken und die Option „Im Windows-Terminal öffnen“ auswählen, wird Windows-Terminal gestartet und legt diesen bestimmten Speicherort als aktuelles Arbeitsverzeichnis fest. Obwohl dies eine großartige Funktion ist, findet nicht jeder Verwendung für diese Funktion. Einige Benutzer möchten diese Option möglicherweise einfach nicht in ihrem Rechtsklick-Kontextmenü haben und möchten sie entfernen, um ihr Rechtsklick-Kontextmenü aufzuräumen.

Die Schritte zum Implementieren einer Menünavigationsleiste mit Schatteneffekt mithilfe von reinem CSS erfordern spezifische Codebeispiele. Im Webdesign ist die Menünavigationsleiste ein sehr häufiges Element. Durch das Hinzufügen eines Schatteneffekts zur Menünavigationsleiste können Sie nicht nur deren Ästhetik verbessern, sondern auch das Benutzererlebnis verbessern. In diesem Artikel verwenden wir reines CSS, um eine Menünavigationsleiste mit Schatteneffekt zu implementieren, und stellen spezifische Codebeispiele als Referenz bereit. Die Implementierungsschritte sind wie folgt: HTML-Struktur erstellen Zuerst müssen wir eine grundlegende HTML-Struktur erstellen, um die Menünavigationsleiste aufzunehmen. von
![Wie löse ich das Problem „Fehler: [vuex] unbekannter Aktionstyp: xxx' bei der Verwendung von vuex in einer Vue-Anwendung?](https://img.php.cn/upload/article/000/887/227/168766615217161.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
In Vue.js-Projekten ist Vuex ein sehr nützliches Statusverwaltungstool. Es hilft uns, den Status zwischen mehreren Komponenten zu teilen und bietet eine zuverlässige Möglichkeit, Statusänderungen zu verwalten. Bei der Verwendung von vuex tritt jedoch manchmal der Fehler „Fehler:[vuex]unknownactiontype:xxx“ auf. In diesem Artikel werden die Ursache und Lösung dieses Fehlers erläutert. 1. Fehlerursache Bei der Verwendung von vuex müssen wir einige Aktionen und mu definieren
![Wie kann das Problem „Fehler: [vuex] ändert den Vuex-Speicherstatus außerhalb von Mutationshandlern nicht' gelöst werden, wenn Vuex in einer Vue-Anwendung verwendet wird?](https://img.php.cn/upload/article/000/000/164/168760467048976.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
In Vue-Anwendungen ist die Verwendung von Vuex eine gängige Methode zur Zustandsverwaltung. Bei der Verwendung von vuex kann es jedoch manchmal zu einer Fehlermeldung kommen: „Fehler:[vuex]donotmutatevuexstorestateoutsidemutationhandlers“ Was bedeutet diese Fehlermeldung? Warum erscheint diese Fehlermeldung? Wie kann dieser Fehler behoben werden? In diesem Artikel wird dieses Problem ausführlich behandelt. Die Fehlermeldung enthält

Vue2.x ist derzeit eines der beliebtesten Front-End-Frameworks, das Vuex als Lösung für die Verwaltung des globalen Status bereitstellt. Durch die Verwendung von Vuex kann die Statusverwaltung klarer und einfacher zu warten sein. Im Folgenden werden die Best Practices von Vuex vorgestellt, um Entwicklern dabei zu helfen, Vuex besser zu nutzen und die Codequalität zu verbessern. 1. Verwenden Sie einen modularen Organisationsstatus, um alle Status der Anwendung zu verwalten und den Status aus den Komponenten zu extrahieren, wodurch die Statusverwaltung klarer und verständlicher wird. Bei Anwendungen mit vielen Zuständen müssen Module verwendet werden

Mit der nativen Nachrichten-App auf dem iPhone können Sie gesendete Texte ganz einfach bearbeiten. Auf diese Weise können Sie Ihre Fehler und Zeichensetzung korrigieren und sogar falsche Phrasen/Wörter, die möglicherweise in Ihren Text übernommen wurden, automatisch korrigieren. In diesem Artikel erfahren Sie, wie Sie Nachrichten auf dem iPhone bearbeiten. So bearbeiten Sie Nachrichten auf dem iPhone. Erforderlich: iPhone mit iOS16 oder höher. Sie können iMessage-Text nur in der Nachrichten-App bearbeiten, und zwar nur innerhalb von 15 Minuten nach dem Senden des Originaltexts. Nicht-iMessage-Text wird nicht unterstützt und kann daher nicht abgerufen oder bearbeitet werden. Starten Sie die Nachrichten-App auf Ihrem iPhone. Wählen Sie unter „Nachrichten“ die Konversation aus, deren Nachricht Sie bearbeiten möchten
