≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > vue.js

Vuex mutitons和actions初使用分析

人气:774 时间:2019-04-15

这篇文章主要为大家详细介绍了Vuex mutitons和actions初使用分析,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

 

Mutations

 

mutations 必须是同步函数,为什么?

举个例子:  官方案例

代码如下:


mutations: {
 someMutation (state) {
  api.callAsyncMethod(() => {
   state.count++
  })
 }
}

我们都知道任何回调函数中进行的状态改变都是无法追踪的,  devtools会对mutations的每一条提交做记录,记录上一次提交之前和提交之后的状态,在上面的例子中无法实现捕捉状态,因为在执行mutations时,内部回调函数还没有执行,

所以此时无法捕捉状态.

再简单来讲,就像大家都吃过核桃,核桃刚产下来的时候是带一层绿色的皮的,我们需要将绿色烧掉,弄掉了,才是我们在市场上见到的只有外面硬壳的核桃,如果我们只剥去绿皮,是不能直接吃的,因为还有一层壳胡着呢.

 

Actions

 

 

vuex肯定不甘示弱,为了解决mutations只有同步的问题,提出了actions(异步),专门用来解决mutations只有同步无异步的问题.

1. 首先先了解一下actions

(1).MUTATIONS

代码如下:


const state = {
    xxx: null
  },
  const mutations = {
    [setState](state, value) {
      state.xxx = value
    }
  }


此处value可以是对象,可以是值等

组件调用方式: this.$store.commit('setState', [value])

(2).ACTIONS

代码如下:


  // 第一种写法简写形式
  const actions = {
    [addPlus]({commit}) { // 简写方式,待研究
      commit('[setState]', value)
      //此处value可以是对象,可以是固定值等
    }
  }
  // 第二种形式
  const actions = {
    [addPlus](context) {
      //context 官方给出的指定对象, 此处context可以理解为store对象
      context.commit('[setState]', value)
    }
  }
  /* 两处的commit都是提交的mutations中的字符串的事件类型名称,对应会调用mutations中的回调函数 */
  actions在组件中的调用方式: 
  import mapActions from 'vuex'
  methods: {
    ...mapActions: ([
     'addPlus' 
    ]),
    setAddPlus () {
      this.$store.dispatch('addPlus', [value]) // 异步调用mutations
    }
  }

 

Vuex 状态管理

 

 

Vuex 依赖于 Vue 用来管理 Vue 项目状态

状态的修改依赖于 commit 和 dispatch

代码如下:


import Vue from 'Vue';
import Vuex from 'Vuex';

export default new Vuex.Store({
  state:{
    count:100
  },
  mutations:{
    change(state,payload){
      state.count += payload;
    }
  },
  actions:{
    change(context,palyload){
      context.commit('change',palyload);// 异步触发 mutaiton
    }
  },
  getters:{
    getCount(){
      return state.count;
    }
  }
})

代码如下:


{{$store.state.count}}
<button @click="commitChange">更改count</button>
<button @click="dispatchChange">更改count</button>

...

methods:{
  commitChange(){
    this.$store.commit('change',1);
  },
  dispatchChange(){
    this.$sotre.dispatch('change',10);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持四海网。

本文来自:http://www.q1010.com/184/6847-0.html

注:关于Vuex mutitons和actions初使用分析的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:vue.js

您可能感兴趣的文章

  • 用VueJS写一个Chrome浏览器插件的实现方法
  • 分析基于iview-ui的导航栏路径(面包屑)配置
  • vuex实现及简略解析(小结)
  • Vue实现类似Spring官网图片滑动效果方法
  • Vue CLI3.0中使用jQuery和Bootstrap的方法
  • 如何优雅地在vue中添加权限控制示例分析
  • Vue 后台管理类项目兼容IE9+的方法示例
  • Vue插件从封装到发布的完整步骤记录
  • vue-cli3+typescript初体验小结
  • vue强制刷新组件的方法示例
上一篇:分析vue项目中使用token的身份验证的简单实践
下一篇:如何优雅地在vue中添加权限控制示例分析
热门文章
  • Vue 报错TypeError: this.$set is not a function 的解决方法
  • vue实现动态添加数据滚动条自动滚动到底部的示例代码
  • vue项目设置scrollTop不起作用(总结)
  • vue项目中使用vue-i18n报错的解决方法
  • iview实现select tree树形下拉框的示例代码
  • 分析关于element级联选择器数据回显问题
  • vue项目打包后打开页面空白解决办法
  • 解决element ui select下拉框不回显数据问题的解决
  • element-ui table span-method(行合并)的实现代码
  • element-ui 设置菜单栏展开的方法
  • 最新文章
    • 理解vue ssr原理并自己搭建简单的ssr框架
    • vue favicon设置以及动态修改favicon的方法
    • vue-router启用history模式下的开发及非根目录部署方法
    • 从零开始在NPM上发布一个Vue组件的方法步骤
    • Element input树型下拉框的实现代码
    • Vue 报错TypeError: this.$set is not a function 的解决方法
    • Vue.js组件高级特性实例分析
    • 浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
    • 分析Vue.js自定义tipOnce指令用法实例
    • 浅谈vuex actions和mutation的异曲同工

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。