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动态创建html元素的常用方法汇总
Sep 05 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
Feb 26 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
vue中提示$index is not defined错误的解决方式
Sep 02 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
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+DBM的同学录程序(4)
2006/10/09 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
python读取文本中的坐标方法
2018/10/14 Python
python 美化输出信息的实例
2018/10/15 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python之时间和日期使用小结
2019/02/14 Python
python制作图片缩略图
2019/04/30 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
GWebs公司笔试题
2012/05/04 面试题
标准毕业生自荐信范文
2013/11/04 职场文书
优秀毕业生求职推荐信范文
2013/11/21 职场文书
旅游文化节策划方案
2014/06/06 职场文书
工会积极分子个人总结
2015/03/03 职场文书
公司总经理岗位职责
2015/04/01 职场文书
铁人观后感
2015/06/16 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
python脚本框架webpy模板赋值实现
2021/11/20 Python
python套接字socket通信
2022/04/01 Python
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS