Heim  >  Artikel  >  Web-Frontend  >  Wie die Vuex-Statusverwaltung verwendet werden sollte

Wie die Vuex-Statusverwaltung verwendet werden sollte

php中世界最好的语言
php中世界最好的语言Original
2018-04-16 10:28:381577Durchsuche

Dieses Mal zeige ich Ihnen, wie Sie die Vuex-Zustandsverwaltung verwenden und welche Vorsichtsmaßnahmen bei der Verwendung der Vuex-Zustandsverwaltung gelten. Hier sind praktische Fälle, werfen wir einen Blick darauf.

Vuex ist ein Tool, das für Vue.js entwickelt wurde Zustandsverwaltungsmuster für die Anwendungsentwicklung. Es verwendet einen zentralen Speicher, um den Status aller Komponenten der Anwendung zu verwalten, und stellt mithilfe entsprechender Regeln sicher, dass sich der Status auf vorhersehbare Weise ändert. Vuex ist ebenfalls integriert Die offizielle Devtools-Erweiterung des Debugging-Tools von Vue bietet erweiterte Debugging-Funktionen wie Zeitreise-Debugging ohne Konfiguration, Import und Export von Status-Snapshots usw.

Das Obige ist die Einführung von vuex im offiziellen Dokument von vuex. Das offizielle Dokument erläutert die Verwendung von vuex im Detail. Ich werde hier nicht näher auf die Verwendung von Vuex eingehen. Der Zweck des Schreibens dieses Blogs besteht lediglich darin, einigen Schülern zu helfen, Vuex schneller zu verstehen und damit zu beginnen.

1. Installieren Sie

$ npm install vuex --save

2. Referenz store.js

import Vue from 'vue'
import App from './App'
import router from './router' 
import store from './vuex/store'  //引用store.js
Vue.config.productionTip = false //阻止在启动时生成生产提示 
//vue实例
new Vue({
 el: '#app',
 router,
 store,              //把store挂在到vue的实例下面
 template: '<app></app>',
 components: { App }
})

in main.js Haupteingang js 3. Verweisen Sie auf Vuex

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex) //注册Vuex
// 定义常量  如果访问他的话,就叫访问状态对象
const state = {
  count: 1
}
// mutations用来改变store状态, 如果访问他的话,就叫访问触发状态
const mutations = {
  //这里面的方法是用 this.$store.commit('jia') 来触发
  jia(state){
    state.count ++
  },
  jian(state){
    state.count --
  },
}
//暴露到外面,让其他地方的引用
export default new Vuex.Store({
  state,
  mutations
})

in store.js 4. Verwenden Sie

in der Vue-Komponente Verwenden Sie den Bereich $store.commit('jia'), um die Additions- und Subtraktionsmethoden unter den Mutationen

<template>
 <p>
   </p>
<h1>Hello Vuex</h1>
   <h5>{{$store.state.count}}</h5>
   <p>
    <button>+</button>
    <button>-</button>
   </p>
 
</template>
<!-- 加上scoped是css只在这个组件里面生效,为了不影响全局样式 -->
<style>
  h5{
   font-size: 20px;
   color: red;
  }
</style>

auszulösen 5. Sehen Sie sich die Demo an

Wie die Vuex-Statusverwaltung verwendet werden sollte

6. state greift auf das State-Objekt zu

Verwenden Sie berechnet, um

<template>
 <p>
   </p>
<h1>Hello Vuex</h1>
   <h5>{{count}}</h5>
   <p>
    <button>+</button>
    <button>-</button>
   </p>
 
</template>
<script>
import {mapState} from &#39;vuex&#39;
export default{
  name:&#39;hello&#39;, //写上name的作用是,如果你页面报错了,他会提示你是那个页面报的错,很实用
  // 方法一
  // computed: {
  //  count(){
  //   return this.$store.state.count + 6
  //  }
  // }
  
  // 方法二 需要引入外部 mapState
  computed:mapState({
   count:state => state.count + 10
  })
 
  // ECMA5用法
  // computed:mapState({
  //  count:function(state){
  //   return state.count
  //  }
  // })
  
  //方法三
  // computed: mapState([
  //  &#39;count&#39;
  // ])
 }
</script>

zu berechnen 7. Mutations-Trigger-Zustand (Synchronisationszustand)

<template>
 <p>
   </p>
<h1>Hello Vuex</h1>
   <h5>{{count}}</h5>
   <p>
    <button>+</button>
    <button>-</button>
   </p>
 
</template>
<script>
import {mapState,mapMutations} from &#39;vuex&#39;
 export default{
  name:&#39;hello&#39;, //写上name的作用是,如果你页面报错了,他会提示你是那个页面报的错,很实用
  //方法三
  computed: mapState([
   &#39;count&#39;
  ]),
  methods:{
   ...mapMutations([
     &#39;jia&#39;,
     &#39;jian&#39;
   ])
  }
 }
</script>

8. Getter berechnen das Attribut

Getter kann keine Pfeilfunktionen verwenden, wodurch sich die Ausrichtung dieses

ändert Fügen Sie Getter

// 计算
const getters = {
  count(state){
    return state.count + 66
  }
}
export default new Vuex.Store({
  state,
  mutations,
  getters
})
//count的参数就是上面定义的state对象
//getters中定义的方法名称和组件中使用的时候一定是一致的,定义的是count方法,使用的时候也用count,保持一致。
组件中使用
<script>
 import {mapState,mapMutations,mapGetters} from &#39;vuex&#39;
 export default{
  name:&#39;hello&#39;,
  computed: {
   ...mapState([
    &#39;count&#39;
   ]),
   ...mapGetters([
    &#39;count&#39;
   ])
  },
  methods:{
   ...mapMutations([
     &#39;jia&#39;,
     &#39;jian&#39;
   ])
  }
 }
</script>

in store.js hinzu 9. Aktions (asynchroner Zustand)

Fügen Sie Aktionen

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 定义常量
const state = {
  count: 1
}
// mutations用来改变store状态 同步状态
const mutations = {
  jia(state){
    state.count ++
  },
  jian(state){
    state.count --
  },
}
// 计算属性
const getters = {
  count(state){
    return state.count + 66
  }
}
// 异步状态
const actions = {
  jiaplus(context){
    context.commit('jia') //调用mutations下面的方法
    setTimeout(()=>{
      context.commit('jian')
    },2000)
    alert('我先被执行了,然后两秒后调用jian的方法')
  },
  jianplus(context){
    context.commit('jian')
  }
}
export default new Vuex.Store({
  state,
  mutations,
  getters,
  actions
})

in store.js hinzu Verwenden Sie

<template>
 <p>
   </p>
<h1>Hello Vuex</h1>
   <h5>{{count}}</h5>
   <p>
    <button>+</button>
    <button>-</button>
   </p>
   <p>
    <button>+plus</button>
    <button>-plus</button>
   </p>
 
</template>
<script>
 import {mapState,mapMutations,mapGetters,mapActions} from &#39;vuex&#39;
 export default{
  name:&#39;hello&#39;,
  computed: {
   ...mapState([
    &#39;count&#39;
   ]),
   ...mapGetters([
    &#39;count&#39;
   ])
  },
  methods:{
   // 这里是数组的方式触发方法
   ...mapMutations([
     &#39;jia&#39;,
     &#39;jian&#39;
   ]),
   // 换一中方式触发方法 用对象的方式
   ...mapActions({
    jiaplus: &#39;jiaplus&#39;,
    jianplus: &#39;jianplus&#39;
   })
  }
 }
</script>
<style>
  h5{
   font-size: 20px;
   color: red;
  }
</style>

in Komponenten 10. Module Modul

Geeignet für sehr große Projekte mit vielen Status, einfach zu verwalten

Ändern Sie store.js

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
  count: 1
}
const mutations = {
  jia(state){
    state.count ++
  },
  jian(state){
    state.count --
  },
}
const getters = {
  count(state){
    return state.count + 66
  }
}
const actions = {
  jiaplus(context){
    context.commit('jia') //调用mutations下面的方法
    setTimeout(()=>{
      context.commit('jian')
    },2000)
    alert('我先被执行了,然后两秒后调用jian的方法')
  },
  jianplus(context){
    context.commit('jian')
  }
}
//module使用模块组的方式 moduleA
const moduleA = {
  state,
  mutations,
  getters,
  actions
}
// 模块B moduleB
const moduleB = {
  state: {
    count:108
  }
}
export default new Vuex.Store({
  modules: {
    a: moduleA,
    b: moduleB,
  }
})

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:



Das obige ist der detaillierte Inhalt vonWie die Vuex-Statusverwaltung verwendet werden sollte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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