vuex学习

state

访问stata中数据的第一种方式

//在script中使用
var count = this.$store.state.count;
//在template中使用,并且this是可以省略的
<p>{{$store.state.count}}</p> 

访问stata中数据的第二种方式

//1.从vuex中按需导入mapState函数
import {mapState} from 'vuex'
//2将全局数据,映射为当前组件的计算属性
computed:{
...mapState(['count'])
}

Mutation

Mutation用于变更Store中的数据,不能执行异步的方法(setTimeout)
1.只能通过mutation变更Store的数据,不可以直接操作store的数据。
2.通过这种方式虽然看起来稍微繁琐一些,但是可以集中监控所有数据的变化。

//创建mutation函数
export default new Vuex.Store({
  state: {
    count:0
  },
  mutations: {
    add(state){
      state.count++
    }
  }
});
//触发mutation
 methods: {
    handleFn() {
      //commit的作用是调用mutation
      this.$store.commit('add')
    }
  }

Mutation传递参数
1.因为mutations和actions不支持传递多个参数的,这里的参数又称“载荷”(Payload)。如果需要传递多个参数可以采用数组或者对象的方式传递

//数组形式传递多个参数
export default new Vuex.Store({
  state: {
    count:0
  },
  mutations: {
    addN(state,[parm1,parm2]){
      state.count+=step1
    }
  }
})
//调用
 handleFn2(){
   this.$store.commit('addN',[2,3])
 }
//对象形式传递多个参数
export default new Vuex.Store({
  state: {
    count:0
  },
  mutations: {
    addN(state,data){
      state.count+=data.parm1
    }
  }
})
//commit调用
handleFn2(){
  this.$store.commit('addN',{parm1:2,parm2:4})
}
//辅助函数调用mapMutations
import { mapMutations } from 'vuex'
methods: {
   ...mapMutations(['sub']),
   handleFn() {
      this.sub();
   }
  }

Action

Action用于处理异步任务。
如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发mutation的方式间接变更数据

export default new Vuex.Store({
  state: {
    count:0
  },
  mutations: {
    add(state){
      state.count++
    }
  },
  actions: {
    addAsync(context){
      setTimeout(()=>{
        context.commit("add");
      },1000);
    }
  }
})
//第一种方式调用dispatch
methods: {
  handleFn3() {
    this.$store.dispatch('addAsync')
  }
}
//第二种辅助函数调用

Action传递参数的形式和Mutation大体相同。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 安装 使用步骤 创建store文件夹 在main.js中引入store 使用数据 在完成数据初步渲染之后在组件一种...
    北风吹_yfy阅读 1,232评论 0 1
  • Vuex学习 一、Vuex是做什么的? 官方解释:Vuex是一个专为Vue.js应用程序开发的状态管理模式,它采用...
    waigo阅读 333评论 0 0
  • 1、组件之间共享数据的方式: 父-子:v-bind属性绑定子-父:v-on事件绑定兄弟组件之间共享数据:Event...
    玉思盈蝶阅读 239评论 0 0
  • 终于又开始学习了!最近有点瞎忙,哎! Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。状态管理,就...
    小本YuDL阅读 323评论 0 0
  • 代码管理 每天早上更新一下代码git pull vuex的学习 vuex的了解Vuex是一个专门为vue.js应用...
    Gopal阅读 342评论 0 0

友情链接更多精彩内容