vuex的使用
下载安装配置
npm install vuex --save
创建一个store文件夹 ,在里面创建store.js文件
//store.js里面
import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
const store=new Vuex.Store({
  //
})
export default store
需要把这个对象导出,在main文件里面引用
import store from "./store/store"
并且挂载到
new Vue({
  store
})
介绍:
state:{}, 等同于组件里面的data是放数据的
    -存放状态(共享数据)在组件里面使用 this.$store.state.属性名
mutations:{}, 等同于组件里面的methods
    -可以放一些方法和改变state里面的状态(数据)
    定义一个方法,在组件里面使用this.$store.commit('方法名')触发这个方法
getters:{}, 等同于组件里面的computed
    -等同于计算属性,可以把一些组件公用的计算方法放在该对象里面
例子:
getters:{
  bb(){
    var that=this;
    var newArr=[];
    that.state.stus.filter((item)=>newArr.push(item.age>21)) //这个箭头函数有返回值
  }
}
调用
this.num=this.$store.getters("bb")
actions:{},
    -有一些异步操作的代码放在这里面
    通过 content.commit()触发mutations里面的方法
    并且在组件里面使用this.$store.dispatch('ascyonPmsg')来触发该对象里面的方法
mutations: {
  changePmsg(state){
    //异步的代码要放到actions里面去进行改变
    state.pmsg = "改变后的数据啊呵呵"
  }
}, 
actions: {
  //content 上下文
  ascyonPmsg(content){
    setTimeout(function () {
      content.commit('changePmsg')
    },1000)
  }
},
调用
this.$store.dispatch('ascyonPmsg')
modules:{}
    -可以继续因为当项目很大时候,store里面会存储很多数据状态以及一些方法,不方便管理,
modules可以将store 继续分割模块,方便管理 (注:小项目基本不用)
modules: {
  a:{
    state:{
      name:'张三',
      age:13
    },
    mutations:{},
    actions:{},
    getters:{}
  },
  b:{}
}
调用 this.$store.state.a.name
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号