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 相关文章推荐
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
多种方式实现JS调用后台方法进行数据交互
Aug 20 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
js动态拼接正则表达式的两种方法
Mar 04 Javascript
与Math.pow 相反的函数使用介绍
Aug 04 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
angular中使用Socket.io实例代码
Jun 03 Javascript
JavaScript的查询机制LHS和RHS解析
Aug 16 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
JS中的模糊查询功能
Dec 08 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
基于js中this和event 的区别(详解)
2017/10/24 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
linux面试题参考答案(4)
2013/01/28 面试题
Overload和Override的区别
2012/09/02 面试题
承诺书范文
2014/06/03 职场文书
作风年建设汇报材料
2014/08/14 职场文书
先进个人总结范文
2015/02/15 职场文书
自主招生自荐信格式
2015/03/04 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
民主生活会意见
2015/06/05 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书