vuex

vuex 是一个专门为vue.js利用程序开发的状态管理模式。

vuex中,有默认的五种根本的对象:

  • state:存储状态(变量)
  • getters:对数据获取之前的再次编译,能够了解为state的计算属性。咱们在组件中应用 $sotre.getters.fun()
  • mutations:批改状态,并且是同步的。在组件中应用$store.commit('',params)。这个和咱们组件中的自定义事件相似。
  • actions:异步操作。在组件中应用是$store.dispath('')
  • modules:store的子模块,为了开发大型项目,不便状态治理而应用的。这里咱们就不解释了,用起来和下面的一样。

装置应用

装置vuex

npm install vuex --save

vuex调用

新建store/store.js文件,引入vuex

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const state = {  count: 1}const mutations = {  increment (state) {    state.count++  }}export default new Vuex.Store({  state,  mutations})

main.js

引入store

import store from './store/store'new Vue({  el: '#app',  router,  store,  components: { App },  template: '<App/>'})

页面调用count状态

{{ $store.state.count }}

用mutations和actions 持续操作store状态

<button @click="add()">add</button>methods: {    add () {     this.$store.commit('increment') //一般提交封装    }  }

mutations携带参数

<button @click="add(10)">add</button> methods: {    add (count) {    //  this.$store.commit('increment',count)       this.$store.commit({ //对象提交封装       type:'increment',       count     })    }  }store.js文件:const mutations = {  increment (state,count) {    state.counter+=count  }} //对象提交count更改 payload   increment (state) {   state.counter+=payload.count}

actions异步操作

const actions = { // 异步操作  acincrement (context) {    state.count++  }

应用dispath来触发

 this.$store.dispatch('acincrement')

getters

const getters = {  getterCount(state, n = 0) {    return (state.count += n)  }}export default new Vuex.Store({  state,  mutations,  actions,  getters})

属性调用:

{{ $store.getters.getterCount }}

getters传参:

{ $store.getters.getterid(10) }}getterid(state){return age = >{return //须要判断的数值}}