vue.js的状态管理vuex中store的使用详解


Posted in Javascript onNovember 08, 2019

一、状态管理(vuex)简介

vuex是专为vue.js应用程序开发的状态管理模式。它采用集中存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。vuex也集成刀vue的官方调试工具devtools extension,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能。

二、状态管理核心

状态管理有5个核心,分别是state、getter、mutation、action以及module。分别简单的介绍一下它们:

1、state

state为单一状态树,在state中需要定义我们所需要管理的数组、对象、字符串等等,只有在这里定义了,在vue.js的组件中才能获取你定义的这个对象的状态。

2、getter

getter有点类似vue.js的计算属性,当我们需要从store的state中派生出一些状态,那么我们就需要使用getter,getter会接收state作为第一个参数,而且getter的返回值会根据它的依赖被缓存起来,只有getter中的依赖值(state中的某个需要派生状态的值)发生改变的时候才会被重新计算。

3、mutation

更改store中state状态的唯一方法就是提交mutation,就很类似事件。每个mutation都有一个字符串类型的事件类型和一个回调函数,我们需要改变state的值就要在回调函数中改变。我们要执行这个回调函数,那么我们需要执行一个相应的调用方法:store.commit。

4、action

action可以提交mutation,在action中可以执行store.commit,而且action中可以有任何的异步操作。在页面中如果我们要嗲用这个action,则需要执行store.dispatch

5、module

module其实只是解决了当state中很复杂臃肿的时候,module可以将store分割成模块,每个模块中拥有自己的state、mutation、action和getter。

三、实例

首先建立一个vue.js项目,然后引入vuex

npm install vuex --save

而后建立一个store文件夹,建立一个store.js。在store.js中引入vue和vuex、在有需要的时候可以引入axios。

import vue from 'vue'

import vuex from 'vuex'

vue.use(vuex)

const state={

  userList:[]

}



const mutations={

  setUserList(state,data){

    state.userList=data;

    (注:如果这里的userList需要axios请求也可以把axios写在等号后面)

  }

}



const action={

  commitUserList:({commit},userList)=>commit('setUserList',userList)

}

这样一个简单的store.js就已经完成了。

在界面中我们要怎么使用这个建立的状态管理呢:

首先在script下引入store.js

<script>

import store from 'store.js的路径'

data(){

  return{

    userList:store.state.userList;//引入state中的对象

  }

},

methods:{

  useAction(){

      var item=['1':'2','a':'c'];

      store.dispatch('setUserList',item);

  }

}

</script>

以上这篇vue.js的状态管理vuex中store的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 设置文本框中焦点的位置
Nov 20 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
Dec 05 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
详解JavaScript基本类型和引用类型
Dec 09 Javascript
AngularJS 遇到的小坑与技巧小结
Jun 07 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
Mar 04 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
Sep 16 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 #Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 #Javascript
vue路由拦截器和请求拦截器知识点总结
Nov 08 #Javascript
Vue打包后访问静态资源路径问题
Nov 08 #Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 #Javascript
js 对象使用的小技巧实例分析
Nov 08 #Javascript
JS对日期操作封装代码实例
Nov 08 #Javascript
You might like
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php join函数应用
2011/05/04 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
ES6 class的应用实例分析
2019/06/27 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python编辑用户登入界面的实现代码
2018/07/16 Python
Python编程中类与类的关系详解
2019/08/08 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
Sony C++笔试题
2013/03/10 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
表彰先进集体通报
2014/01/12 职场文书
商场活动策划方案
2014/01/24 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
计划生育目标责任书
2015/05/09 职场文书
辩护词范文大全
2015/05/21 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android