Heim Web-Frontend js-Tutorial So implementieren Sie die Menüverwaltung mit Vuex

So implementieren Sie die Menüverwaltung mit Vuex

Jun 19, 2018 pm 02:36 PM
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, &#39;userList&#39;)">注册</span>
 <span class="chargeList" @click="menuClicked($event, &#39;chargeList&#39;)">充值</span>
 <span class="buyList" @click="menuClicked($event, &#39;buyList&#39;)">购买</span>
 <span class="bangList" @click="menuClicked($event, &#39;bangList&#39;)">到期</span>
 <span class="withDrawList" @click="menuClicked($event, &#39;withDrawList&#39;)">提现</span>
</p>
Nach dem Login kopieren
rrree

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(&#39;.active&#39;);
 currentActiveLink.classList.remove(&#39;active&#39;);
 // 当前点击的 menu 高亮
 event.target.classList.add(&#39;active&#39;);
 // 路由跳转
 this.$router.push(`/panel/list/${url}`);
},
Nach dem Login kopieren

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
Nach dem Login kopieren

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: &#39;firstMenu1&#39;,
  activeSecondMenu : &#39;secondMenu1&#39;,
 },
 mutations: {
  // 更改一级菜单
  changeFirstActiveMenu (state, menu) {
   state.activeFirstMenu = menu;
  },
  // 更改二级二级菜单
  changeSecondActiveMenu (state, menu) {
   state.activeSecondMenu = menu;
  }
 },
});
Nach dem Login kopieren

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(&#39;secondMenu1&#39;)">secondMenu1</span>
</p>
<p class="subMenu">
 <span :class="{ activeSecondMenu: activeMenu.secondMenu2 }" @click="menuClicked(&#39;secondMenu2&#39;)">secondMenu2</span>
</p>
<p class="subMenu">
 <span :class="{ activeSecondMenu: activeMenu.secondMenu3 }" @click="menuClicked(&#39;secondMenu3&#39;)">secondMenu3</span>
</p>
Nach dem Login kopieren

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: &#39;&#39;,
   secondMenu2: &#39;&#39;,
   secondMenu3: &#39;&#39;,
  },
 };
},
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();
},
Nach dem Login kopieren

Der Komponenten-JS-Teil wird wie folgt optimiert:

const store = new Vuex.Store({
 // 其他代码略

 mutations: {
  // 优化后代码,合并 changeFirstActiveMenu 和 changeSecondActiveMenu
  changeActiveMenu (state, menuInfo) {
   state[menuInfo.menuHierarchy] = menuInfo.name;
  }
 }
});
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Windows 11: Der einfache Weg, Startlayouts zu importieren und zu exportieren Windows 11: Der einfache Weg, Startlayouts zu importieren und zu exportieren Aug 22, 2023 am 10:13 AM

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

So stellen Sie im Rechtsklick-Menü von Windows 11 standardmäßig „Weitere Optionen anzeigen' ein So stellen Sie im Rechtsklick-Menü von Windows 11 standardmäßig „Weitere Optionen anzeigen' ein Jul 10, 2023 pm 12:33 PM

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

So entfernen Sie die Option „Im Windows-Terminal öffnen' aus dem Kontextmenü mit der rechten Maustaste in Windows 11 So entfernen Sie die Option „Im Windows-Terminal öffnen' aus dem Kontextmenü mit der rechten Maustaste in Windows 11 Apr 13, 2023 pm 06:28 PM

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.

Implementierungsschritte zur Implementierung der Menünavigationsleiste mit Schatteneffekt mithilfe von reinem CSS Implementierungsschritte zur Implementierung der Menünavigationsleiste mit Schatteneffekt mithilfe von reinem CSS Oct 16, 2023 am 08:27 AM

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? Wie löse ich das Problem „Fehler: [vuex] unbekannter Aktionstyp: xxx' bei der Verwendung von vuex in einer Vue-Anwendung? Jun 25, 2023 pm 12:09 PM

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? 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? Jun 24, 2023 pm 07:04 PM

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

Best Practices für die Verwendung von Vuex zur Verwaltung des globalen Status in Vue2.x Best Practices für die Verwendung von Vuex zur Verwaltung des globalen Status in Vue2.x Jun 09, 2023 pm 04:07 PM

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

So bearbeiten Sie Nachrichten auf dem iPhone So bearbeiten Sie Nachrichten auf dem iPhone Dec 18, 2023 pm 02:13 PM

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

See all articles