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学习笔记 操作jQuery对象 属性处理
Sep 19 Javascript
js控制web打印(局部打印)方法整理
May 29 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
javascript:void(0)的作用示例介绍
Oct 28 Javascript
javascript 中that的含义示例介绍
May 14 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
瀑布流的实现方式(原生js+jquery+css3)
Jun 28 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
angularjs ocLazyLoad分步加载js文件实例
Jan 17 Javascript
原生js实现倒计时--2018
Feb 21 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
Nov 24 Javascript
Vue 使用typescript如何优雅的调用swagger API
Sep 01 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页面间参数传递的四种方法详解
2013/06/09 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
Javascript typeof 用法
2008/12/28 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
python爬取天气数据的实例详解
2020/11/20 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
六十岁生日答谢词
2014/01/10 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
廉政承诺书2015
2015/04/28 职场文书
初中班干部工作总结
2015/08/10 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis