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 相关文章推荐
用js的for循环获取radio选中的值
Oct 21 Javascript
jquery div拖动效果示例代码
Dec 08 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
加随机数引入脚本不让浏览器读取缓存
Sep 04 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
JS实现HTML表格排序功能
Aug 05 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
Vue用v-for给循环标签自身属性添加属性值的方法
Oct 18 Javascript
webpack打包多页面的方法
Nov 30 Javascript
JavaScript实现简单的音乐播放器
Aug 14 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
调频问题解答
2021/03/01 无线电
php笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
JavaScript中的全局对象介绍
2015/01/01 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
使用python turtle画高达
2020/01/19 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python 实现进度条的六种方式
2021/01/06 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
行政部总经理岗位职责
2014/01/04 职场文书
毕业生护理专业个人求职信范文
2014/01/04 职场文书
数学系个人求职信范文
2014/01/30 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
暂住证证明
2015/06/19 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers