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常用表单验证方法总结
May 22 Javascript
express的中间件basicAuth详解
Dec 04 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
JavaScript获取中英文混合字符串长度的方法示例
Feb 04 Javascript
用js将long型数据转换成date型或datetime型的实例
Jul 03 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
利用python获得时间的实例说明
2013/03/25 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
工厂厂长的职责
2013/12/12 职场文书
法制教育观后感
2015/06/17 职场文书
如何写观后感
2015/06/19 职场文书
治庸问责工作总结
2015/08/11 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript