1、概述

Vuex作为插件,管理和维护整个项目的组件状态。

2、安装vuex

cnpm i --save vuex

3、vuex使用

github地址:https://github.com/MengFangui/Vuex

  1. new Vue({
  2. el: '#app',
  3. router: router,
  4. //使用vuex
  5. store: store,
  6. render: h => {
  7. return h(App)
  8. }
  9. });

4、配置项

(1)数据:数据保存在state中。store的数据只能读取,不能改变。

(2)改变store中的数据使用mutations。组件内通过this.$store.commit来执行mutations.

(3)getters提取过滤方法

(4)actions:处理异步操作,组件内通过this.$store.dispatch触发。

涉及数据改变的用mutations,涉及业务逻辑的使用actions。

以上整体配置为:

  1. //vuex的配置
  2. //注意Store是大写
  3. const store = new Vuex.Store({
  4. //数据保存
  5. state: {
  6. count: 0,
  7. list: [1, 5, 8, 10, 30, 50]
  8. },
  9. mutations: {
  10. increase(state, n = 1) {
  11. state.count += n;
  12. },
  13. decrease(state, n = 1) {
  14. state.count -= n;
  15. }
  16. },
  17. getters: {
  18. filteredList: state => {
  19. return state.list.filter(item => item < 10);
  20. }
  21. },
  22. actions:{
  23. asyncIncrease(context){
  24. //异步 1s后执行
  25. return new Promise(resolve=>{
  26. setTimeout(()=>{
  27. context.commit('increase');
  28. //Promise 的一种状态Resolved(已完成)
  29. resolve();
  30. },1000)
  31. })
  32. }
  33. }
  34. });

5、组件代码

  1. <template>
  2. <div>
  3. <h1>首页</h1>
  4. {{count}}
  5. <button @click="handleIncrease">+5</button>
  6. <button @click="handleDecrease">-5</button>
  7.  
  8. <!--getters 用法-->
  9. <div>{{list}}</div>
  10. <!--actions用法-->
  11. <button @click="handleAsyncIncrease">action +1</button>
  12.  
  13. <!--router-link会渲染为一个a标签 实现跳转的方式1-->
  14. <!--router-link 的tag属性 指定渲染成什么标签-->
  15. <!--router-link 的replace属性 不会留下history记录,不能使用后退键-->
  16. <!--router-link 的active-class属性 路由匹配成功时会自动给当前元素设置为一个名为router-link-active的class-->
  17. <router-link to="/about">跳转到 about</router-link>
  18. </div>
  19. </template>
  20. <script>
  21. export default {
  22. computed:{
  23. count(){
  24. return this.$store.state.count;
  25. },
  26. list(){
  27. return this.$store.getters.filteredList;
  28. }
  29. },
  30. methods:{
  31. handleIncrease(){
  32. this.$store.commit('increase',5);
  33. },
  34. handleDecrease(){
  35. this.$store.commit('decrease',5);
  36. },
  37. handleAsyncIncrease(){
  38. this.$store.dispatch('asyncIncrease').then(()=>{
  39. console.log(this.$store.state.count)
  40. });
  41. }
  42. }
  43. }
  44. </script>

vuex 维护多个组件之间的公共(共有)状态!

Vue 状态管理 Vuex的更多相关文章

  1. Vue状态管理vuex

    前面的话 由于多个状态分散的跨越在许多组件和交互间各个角落,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue提供了vuex.本文将详细介绍Vue状态管理vuex 引入 当访问数据对象时,一个 V ...

  2. Vue学习日记(四)——Vue状态管理vuex

    前言 先说句前话,如果不是接触大型项目,不需要有多个子页面,不使用vuex也是完全可以的. 说实在话,我在阅读vuex文档的时候,也很难以去理解vuex,甚至觉得没有使用它我也可以.但是直到我在项目碰 ...

  3. vue状态管理vuex从浅入深详细讲解

    1.vuex简介以及创建一个简单的仓库 vuex是专门为vue框架而设计出的一个公共数据管理框架,任何组件都可以通过状态管理仓库数据沟通,也可以统一从仓库获取数据,在比较大型的应用中,数据交互庞大的情 ...

  4. Vue状态管理Vuex简单使用

    状态管理保存在store\index.js中,简单说明如下 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export def ...

  5. vue 状态管理vuex(九)

    通过props 及 $emit在父子组件通讯,对应频繁更新状态考虑使用vuex store.js export default { // 存储状态值 state: { count: 0 }, // 状 ...

  6. Vue之状态管理(vuex)与接口调用

    Vue之状态管理(vuex)与接口调用 一,介绍与需求 1.1,介绍 1,状态管理(vuex) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态 ...

  7. vue - 状态管理器 Vuex

    状态管理 vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性.

  8. vuex(vue状态管理)

    vuex(vue状态管理) 1.先安装vuex npm install vuex --save   2.在项目的src目录下创建store目录,并且新建index.js文件,然后创建vuex实例,引入 ...

  9. VueX(vue状态管理)简单小实例

    VueX:状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 核心模块:State. ...

随机推荐

  1. flutter 修改anroid默认example包名

  2. poj2253 最短路变形

    题目连接:http://poj.org/problem?id=2253 Description Freddy Frog is sitting on a stone in the middle of a ...

  3. ZCMU Problem G: 素数对(数论,素数筛法)

    #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #inc ...

  4. luogu P1038借教室【Noip提高组2012】

    这道题我读完题目的第一感觉是: 这不就是个线段树??用线段树维护区间最小值,检查是否满足订单要求即可判断. 对于修改操作直接在区间上进行. 据说会卡一卡线段树,但是貌似写一个懒标记,连zkw线段树都不 ...

  5. 37、Django实战第37天:404以及500页面配置

    1.把404.html,500.html复制到templates下,替换静态文件路径 2.编辑users.views.py定义404,505函数 from django.shortcuts impor ...

  6. 13、Django实战第13天:分页列表功能

    我们看课程 机构列表页是需要分页的 为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-pagination workon mxonline pip install dj ...

  7. 最小割分治(最小割树):BZOJ2229 && BZOJ4519

    定理:n个点的无向图的最小割最多n-1个. 可能从某种形式上形成了一棵树,不是很清楚. 最小割分治:先任选两个点求一边最小割,然后将两边分别递归,就能找到所有的最小割. 这两个题是一样的,直接搬din ...

  8. AOJ 2251 Merry Christmas (最小点覆盖)

    [题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2251 [题目大意] 给出一张图,现在有一些任务,要求在ti时刻送礼物 ...

  9. [Contest20180311]朋友

    是毒瘤的friends呢~ 注意到“产生感情”和后缀自动机的$Right$集合定义很像,所以先对所有串建广义sam,那么一个节点$s$里的所有串都互相产生感情,而从起点走到$s$走最长路所经过的节点里 ...

  10. 【二分答案】Codeforces Round #402 (Div. 2) D. String Game

    二分要删除几个,然后暴力判定. #include<cstdio> #include<cstring> using namespace std; int a[200010],n, ...