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的eval JSON object问题
Nov 15 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
基于javascript实现单选及多选的向右和向左移动实例
Jul 25 Javascript
jQuery实现日期联动效果实例
Jul 26 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
详解Vue-基本标签和自定义控件
Mar 24 Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
Mar 07 Javascript
vue axios封装及API统一管理的方法
Apr 18 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
php foreach正序倒序输出示例代码
2014/07/01 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
python opencv进行图像拼接
2020/03/27 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
计算机专业学生求职信分享
2013/12/15 职场文书
人事科岗位职责范本
2014/03/02 职场文书
通用自荐信范文
2014/03/14 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android