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 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
很酷的javascript loading效果代码
Jun 18 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
Sep 21 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
JS实现读取xml内容并输出到div中的方法示例
Apr 19 Javascript
WEEX环境搭建与入门详解
Oct 16 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统计数组元素个数的方法
2015/07/02 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
Seajs源码详解分析
2019/04/02 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
深入浅析python变量加逗号,的含义
2020/02/22 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
最新党员思想汇报
2014/01/01 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
教师党员一句话承诺
2014/03/28 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
三八妇女节活动总结
2014/05/04 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
开发房地产协议书
2014/09/14 职场文书
锦旗赠语
2015/06/23 职场文书
上班旷工检讨书
2015/08/15 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS