Heim WeChat-Applet Mini-Programmentwicklung Detaillierte Erläuterung der modularen (Modul-)Beispiele von Vuex

Detaillierte Erläuterung der modularen (Modul-)Beispiele von Vuex

Jan 31, 2018 pm 01:47 PM
module vuex 模块化

Dieser Artikel stellt Ihnen hauptsächlich die Vuex-Modularität vor. Der Herausgeber findet ihn ziemlich gut. Jetzt teile ich ihn mit Ihnen und hoffe, dass er Ihnen helfen kann.

1. Warum Modularisierung erforderlich ist

Die zuvor erwähnten Beispiele werden alle in einem Zustandsbaum ausgeführt. Wenn ein Projekt relativ groß ist, werden alle Zustände zusammengefasst. Holen Sie sich ein relativ großes Objekt, das aufbläht und schwer zu pflegen ist. Um dieses Problem zu lösen, können wir mit Vuex den Speicher in Module unterteilen. Jedes Modul hat seinen eigenen Status, seine eigene Mutation, seine eigene Aktion und seinen eigenen Getter. Schauen wir uns unten ein typisches Modularisierungsbeispiel an >

2. Der lokale Status des Moduls
const moduleA = {
 state: {....},
 mutations: {....},
 actions: {....},
 getters: {....}
}

const moduleB = {
 state: {....},
 mutations: {....},
 actions: {....},
 getters: {....}
}

const store = new Vuex.Store({
 modules: {
 a: moduleA,
 b: moduleB
 }
})

store.state.a // moduleA的状态
store.state.b // moduleB的状态
Nach dem Login kopieren

Die Mutation und der Getter innerhalb des Moduls. Der erste empfangene Parameter (Status) ist das lokale Statusobjekt des Moduls, rootState

3. Namespace (Lesen Sie es unbedingt hier, sonst werden Sie manchmal ausgetrickst)
const moduleA = {
 state: { count: 0},
 mutations: {
 increment (state) {
  // state是模块的局部状态,也就是上面的state
  state.count++
 }
 },
 getters: {
 doubleCount (state, getters, rootState) {
  // 参数 state为当前局部状态,rootState为根节点状态
  return state.count * 2
 }
 },
 actions: {
 incremtnIfOddRootSum ( { state, commit, rootState } ) {
  // 参数 state为当前局部状态,rootState为根节点状态
  if ((state.cont + rootState.count) % 2 === 1) {
  commit('increment')
  }
 }
 }
}
Nach dem Login kopieren

In allen oben genannten Beispielen werden die Aktionen, Mutationen und Getter innerhalb des Moduls im globalen Namespace If registriert Sie befinden sich in ModulA und ModulB und deklarieren Aktionen, Mutationen oder Getter (some genannt) mit demselben Namen. Wenn Sie store.commit('some') verwenden, antworten die Module A und B gleichzeitig. Wenn Sie also möchten, dass Ihr Modul eigenständiger und wiederverwendbar ist, können Sie namespaced: true hinzufügen, um es zu einem Namespace-Modul zu machen. Wenn ein Modul registriert ist, rufen alle seine Getter, Aktionen und Mutationen automatisch den gesamten Namen entsprechend dem vom Modul registrierten Pfad auf. Beispiel:

Getter und Aktionen mit aktiviertem Namespace werden lokalisiert empfangen Getter, Dispatch und Commit. Sie müssen im selben Modul kein Space-Namenspräfix hinzufügen, wenn Sie Modulinhalte verwenden, und Sie müssen den Code im Modul nach der Änderung des Namespace-Attributs nicht ändern.
const store = new Vuex.Store({
 modules: {
 account: {
  namespaced: true,
  state: {...}, // 模块内的状态已经是嵌套的,namespaced不会有影响
  getters: {  // 每一条注释为调用方法
  isAdmin () { ... } // getters['account/isAdmin']
  },
  actions: {
  login () {...} // dispatch('account/login')
  },
  mutations: {
  login () {...} // commit('account/login')
  },
  modules: {  // 继承父模块的命名空间
  myPage : {
   state: {...},
   getters: {
   profile () {...}  // getters['account/profile']
   }
  },
  posts: { // 进一步嵌套命名空间
   namespaced: true,
   getters: {
   popular () {...} // getters['account/posts/popular']
   }
  }
  }
 }
 }
})
Nach dem Login kopieren

4. Greifen Sie auf globale Inhalte (Global Assets) innerhalb des Namespace-Moduls zu.

Wenn Sie globalen Status und Getter verwenden möchten, werden roorState und rootGetter als dritter und vierter Parameter an den Getter übergeben . Die Aktion wird auch über die Attribute des Kontextobjekts übergeben. Wenn Sie die Aktion verteilen oder die Mutation im globalen Namespace übermitteln müssen, übergeben Sie einfach { root: true } als dritten Parameter zum Versenden oder Festschreiben.

5. Bindungsfunktionen mit Namespace
modules: {
 foo: {
 namespaced: true,
 getters: {
  // 在这个被命名的模块里,getters被局部化了
  // 你可以使用getter的第四个参数来调用 'rootGetters'
  someGetter (state, getters, rootSate, rootGetters) {
  getters.someOtherGetter // -> 局部的getter, ‘foo/someOtherGetter'
  rootGetters.someOtherGetter // -> 全局getter, 'someOtherGetter'
  }
 },
 actions: {
  // 在这个模块里,dispatch和commit也被局部化了
  // 他们可以接受root属性以访问跟dispatch和commit
  smoeActino ({dispatch, commit, getters, rootGetters }) {
  getters.someGetter // 'foo/someGetter'
  rootGetters.someGetter // 'someGetter'
  dispatch('someOtherAction')  // 'foo/someOtherAction'
  dispatch('someOtherAction', null, {root: true}) // => ‘someOtherAction'
  commit('someMutation') // 'foo/someMutation'
  commit('someMutation', null, { root: true }) // someMutation
  }
 }
 }
}
Nach dem Login kopieren

Wie bereits erwähnt, muss der Namespace nach dem Einbringen beim Aufruf geschrieben werden, was jedoch umständlicher ist, insbesondere wenn es um Multi geht Verschachtelung auf -Ebene (verschachteln Sie während der Entwicklung natürlich nicht zu viel, sonst wird Ihnen schwindelig...)


Werfen wir einen Blick auf die allgemeine Schreibmethode

In dieser Situation können Sie den Namespace des Moduls als erstes Argument an die obige Funktion übergeben, sodass alle Bindungen das Modul automatisch als Kontext verwenden. Vereinfachtes Schreiben ist
computed: {
 ...mapState({
 a: state => state.some.nested.module.a,
 b: state => state.some.nested.module.b
 }),
 methods: {
 ...mapActions([
  'some/nested/module/foo',
  'some/nested/module/bar'
 ])
 }
}
Nach dem Login kopieren

6. Wiederverwendung von Modulen
computed: {
 ...mapStates('some/nested/module', {
 a: state => state.a,
 b: state => state.b
 })
},
methods: {
 ...mapActions('some/nested/module',[
 'foo',
 'bar'
 ])
}
Nach dem Login kopieren

Manchmal können wir mehrere Instanzen eines Moduls erstellen, zum Beispiel:

    Mehrere Stores erstellen , sie teilen sich ein Modul
  • Registrieren Sie dasselbe Modul mehrmals in einem Geschäft

  • Wenn wir ein reines Objekt zum Deklarieren verwenden Wenn Sie den Status des Moduls ändern, wird dieses Statusobjekt über Referenzen gemeinsam genutzt, was dazu führt, dass sich die Daten gegenseitig verunreinigen.
Tatsächlich haben die Daten in der Vue-Komponente das gleiche Problem, daher ist die Lösung dieselbe. Verwenden Sie eine Funktion, um den Modulstatus zu deklarieren (unterstützt von 2.3.0+)


7 . Zusammenfassung
const MyModule = {
 state () {
 return {
  foo: 'far'
 }
 }
}
Nach dem Login kopieren

Der Inhalt der Modularität ist hier abgeschlossen. Diesmal erläutern wir hauptsächlich die Gründe für die Entstehung von Modulen, deren Verwendung, globale und lokale Namensräume für Modulnamen, den lokalen Zugriff auf globale Inhalte und die Zuordnung Funktionen mit Namensräumen. Wiederverwendung gebundener Funktionen und Module.

Zitat

https://vuex.vuejs.org Offizielle Vuex-Dokumentation

Verwandte Empfehlungen:


vuex2.0 Detaillierte Erklärung der Modulinstanz

Detaillierte Erklärung von Vue + Vuex Detaillierte Erklärung der Verwendung der vm.$nextTick-Instanz

Lernen Sie einfaches Vuex und Modularisierung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der modularen (Modul-)Beispiele von 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

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)

So optimieren Sie die Wartbarkeit von Java-Code: Erfahrungen und Ratschläge So optimieren Sie die Wartbarkeit von Java-Code: Erfahrungen und Ratschläge Nov 22, 2023 pm 05:18 PM

So optimieren Sie die Wartbarkeit von Java-Code: Erfahrungen und Ratschläge Im Softwareentwicklungsprozess ist das Schreiben von Code mit guter Wartbarkeit von entscheidender Bedeutung. Wartbarkeit bedeutet, dass Code leicht verstanden, geändert und erweitert werden kann, ohne dass es zu unerwarteten Problemen oder zusätzlichem Aufwand kommt. Für Java-Entwickler ist die Optimierung der Wartbarkeit von Code ein wichtiges Thema. In diesem Artikel werden einige Erfahrungen und Vorschläge geteilt, um Java-Entwicklern dabei zu helfen, die Wartbarkeit ihres Codes zu verbessern. Befolgen Sie standardisierte Benennungsregeln. Standardmäßige Benennungsregeln können die Lesbarkeit des Codes verbessern.

Wie kann der Codekomplexitätsfehler im Python-Code behoben werden? Wie kann der Codekomplexitätsfehler im Python-Code behoben werden? Jun 24, 2023 pm 05:43 PM

Python ist eine einfache, leicht zu erlernende und effiziente Programmiersprache. Wenn wir jedoch Python-Code schreiben, können Probleme mit übermäßiger Codekomplexität auftreten. Wenn diese Probleme nicht gelöst werden, wird es schwierig, den Code zu warten, fehleranfällig zu machen und die Lesbarkeit und Skalierbarkeit des Codes zu verringern. In diesem Artikel besprechen wir daher, wie man Codekomplexitätsfehler in Python-Code beheben kann. Verständnis der Codekomplexität Die Codekomplexität ist ein Maß für die Art des Codes, der schwer zu verstehen und zu warten ist. In Python gibt es einige Indikatoren, die verwendet werden können

Wie kann der Fehler der schlechten Wartbarkeit von Python-Code behoben werden? Wie kann der Fehler der schlechten Wartbarkeit von Python-Code behoben werden? Jun 25, 2023 am 11:58 AM

Python wird als höhere Programmiersprache häufig in der Softwareentwicklung verwendet. Obwohl Python viele Vorteile bietet, besteht ein Problem, mit dem viele Python-Programmierer häufig konfrontiert sind, darin, dass der Code weniger wartbar ist. Die Wartbarkeit von Python-Code umfasst die Lesbarkeit, Skalierbarkeit und Wiederverwendbarkeit des Codes. In diesem Artikel konzentrieren wir uns darauf, wie das Problem der schlechten Wartbarkeit von Python-Code gelöst werden kann. 1. Lesbarkeit des Codes Die Lesbarkeit des Codes bezieht sich auf die Lesbarkeit des Codes, die den Kern der Wartbarkeit des Codes darstellt.

ModuleNotFoundError: Wie behebt man den Fehler „Python-Modul nicht gefunden'? ModuleNotFoundError: Wie behebt man den Fehler „Python-Modul nicht gefunden'? Jun 25, 2023 pm 09:30 PM

Während des Entwicklungsprozesses von Python stoßen wir häufig auf Fehler, bei denen das Modul nicht gefunden wurde. Die spezifische Manifestation dieses Fehlers besteht darin, dass Python beim Importieren des Moduls einen von zwei Fehlern meldet: ModuleNotFoundError oder ImportError. Dieser Fehler ist sehr ärgerlich und kann die ordnungsgemäße Ausführung des Programms verhindern. In diesem Artikel werden wir uns daher mit den Ursachen dieses Fehlers und der Lösung befassen. ModuleNotFoundError und ImportError in Pyth

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 verwenden Sie Vuex in Vue3 So verwenden Sie Vuex in Vue3 May 14, 2023 pm 08:28 PM

Was macht Vuex? Vue-Beamter: Statusverwaltungstool Was ist Statusverwaltung? Der Status muss von mehreren Komponenten gemeinsam genutzt werden, und er reagiert. Sobald er sich ändert, ändert sich alles. Zum Beispiel einige global verwendete Statusinformationen: Benutzeranmeldestatus, Benutzername, geografische Standortinformationen, Artikel im Warenkorb usw. Derzeit benötigen wir ein solches Tool für die globale Statusverwaltung, und Vuex ist ein solches Tool. Einzelseiten-Statusverwaltung Ansicht–>Aktionen–>Status Ansichtsebene (Ansicht) löst Aktion (Aktion) aus, um den Status (Status) zu ändern, und reagiert zurück auf Ansichtsebene (Ansicht) vuex (Vue3.

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

See all articles