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 相关文章推荐
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
浅析JavaScript中的delete运算符
Nov 30 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
小程序实现搜索框功能
Mar 26 Javascript
vue 获取视频时长的实例代码
Aug 20 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 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
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
node.js学习总结之调式代码的方法
2014/06/25 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
python机器人运动范围问题的解答
2019/04/29 Python
python and or用法详解
2019/06/26 Python
pandas取出重复数据的方法
2019/07/04 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
关于Python错误重试方法总结
2021/01/03 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
介绍一下Python中webbrowser的用法
2013/05/07 面试题
酒吧总经理岗位职责
2013/12/10 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
主题班会演讲稿
2014/05/22 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
gateway网关接口请求的校验方式
2021/07/15 Java/Android
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL