vuex是什么?

官网的解释是

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools,extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

而就我浅显的理解是

它类似一个html里面的全局变量,可运用于全局,而vue存储的东西,可以运用于vue所有的组件,方便与组件里面数据的接受与监听。

vuex 在项目中的使用【通过vue-cli 脚手架搭建的项目中】

安装

 
 
1
npm install vuex --save
 
 

在main.js中 引入

 
//main.js

import Vuex from 'vuex';

Vue.use(Vuex);

//创建一个store以便于在所有组件都能查询到vuex的数据

const store = new Vuex.Store({

    state: {

        count: 0

    },

    mutations: {

        increment (state) {

            state.count++

        }

    }

});

​

//简单测试

//store.commit('increment')

//console.log(store.state.count);

​

//在vue实例中引用
export default new Vue({ el: '#app', store, components: { App }, template: '<App/>' });

  

vuex核心概念的使用


//main.js

const store = new Vuex.Store({

    //数据存储的字段

    state: {

        count: 0

    },

    //更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。

    mutations: {

        increment (state,value) {

            state.count+=value

        }

    },

    //可以理解为一个动作,它提交的是 mutation,而不是直接变更状态。

    actions: {

        increment (context,value) {

            context.commit('increment',value)

        }

    },

    //将数据返回出去,以便于组件中拿到count值

    getters:{

        getCounts:state =>state.count

    }

});

  

 ​
//新建一个组件,假设命名为testDemo.vue

<template>

    <div>

        {{counts}}

    </div>

</template>

​

 <script>

 export default {

     name: 'testDemo',

     data () {

         return {

         }

     },

     computed:{

         //通过计算属性监听vuex里面 count的值

         counts(){

             return this.$store.getters.getCounts;

         }

     },

     created(){

         setTimeout(()=>{

             //action 方法提交

             this.$store.dispatch('increment',10)

         },2000)

     }

 }

 </script>

  

 

随后,可以将store在main.js中处理出来,src目录下新建一个文件夹命名为store,新建index.js,actions.js,getters.js,mutation-types.js,mutations.js


//index.js

import Vue from 'vue';

import Vuex from 'vuex';

import mutations from './mutations';

import actions from './actions';

import getters from './getters';

Vue.use(Vuex);

export const store = new Vuex.Store({

    state: {

        count: 1,

    },

    mutations,

    actions,

    getters

});

// mutation-types.js

export const INCREMENT="INCREMENT";
19
​ // action.js import { INCREMENT } from './mutation-types'; export default { [INCREMENT]({ commit, state },value) { commit(INCREMENT,value); }, }; ​ // mutations.js import {

  

 

testDemo.vue

 
<template>

        <div>

            {{counts}}

        </div>

    </template>

​

    <script>

    export default {

        name: 'testDemo',

        data () {

            return {

            }

        },

        computed:{

            //通过计算属性监听vuex里面 count的值

            counts(){

                return this.$store.getters['INCREMENT'];

            }

        },

        created(){

            setTimeout(()=>{

                //action 方法提交

                this.$store.dispatch('INCREMENT',10)

            },2000)

        }

    }

    </script>

  

 
 

这样以来,逼格就立马高了一些
最后,文件的目录大概就长下图这个样子

对vuex的浅解的更多相关文章

  1. 从最大似然到EM算法浅解

    从最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之中的一个:EM算法.能评得上十大之中的一个,让人听起来认为挺NB的. ...

  2. 面试-1-C#浅解

    面试-1   C#浅解众所周知c#是微软推出的一款完全没面向对象的编程语言,那么对象是什么?在现实生活中人们一提到对象首先想到的就是“情侣”!但是在我们的程序中对象是什么? 在程序中个能够区别于其他事 ...

  3. GIS历史概述与WebGis应用开发技术浅解

    声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...

  4. List根据某字段去重,以及compareTo 浅解

    原文链接:https://blog.csdn.net/qq_35788725/article/details/82259013 Collections.sort可对集合进行排序 根据List里面某个字 ...

  5. Vuex state 状态浅解

    对于Vuex中的state里面的理解总是有些欠缺,机制似乎理解了.但是还有很多的不足,在这就先浅谈下自己的理解. vuex 机制中,定义了全局Store,在各个vue组件面的this.$store指向 ...

  6. vuex基础详解

    vuex入门 安装 vuex为我们提供了两种使用方法 直接引入 vuex下载地址:https://unpkg.com/vuex@2.0.0 下载之后用< script >标签包裹引入即可 ...

  7. JVM中GC浅解:垃圾回收的了解

    1.为什么要有GC 没有GC的世界,我们需要手动进行内存管理,但是内存管理是纯技术活,又容易出错.但是我们写码的目的是为了解决业务问题,所以可以把这种纯技术活自动化,当然自动化也是有代价的. 2.垃圾 ...

  8. [js高手之路]Vue2.0基于vue-cli+webpack Vuex用法详解

    在这之前,我已经分享过组件与组件的通信机制以及父子组件之间的通信机制,而我们的vuex就是为了解决组件通信问题的 vuex是什么东东呢? 组件通信的本质其实就是在组件之间传递数据或组件的状态(这里将数 ...

  9. Rest_framework Serializer 序列化 (含源码浅解序列化过程)

    目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/ ...

随机推荐

  1. (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作

    上午写了下单向循环链表的程序,今天下午我把双向链表的程序写完了.其实双向链表和单向链表也是有很多相似的地方的,听名字可以猜到,每个节点都包含两个指针,一个指针指向上一个节点,一个指针指向下一个节点.这 ...

  2. android5.1 Recovery添加从U盘升级功能【转】

    本文转载自:http://blog.csdn.net/tfslovexizi/article/details/73835594 之前看到过一个人写了4.4上添加U盘升级功能的博客http://blog ...

  3. JSP-Runoob:JSP 自定义标签

    ylbtech-JSP-Runoob:JSP 自定义标签 1.返回顶部 1. JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转 ...

  4. 60.extjs-布局 (在column布局中使用fieldset 和 在fieldset中使用column布局)

    转自:https://blog.csdn.net/snn1410/article/details/8817821/ 在标准的html中,需要把输入项都放到fieldset中,一次来显示分组结构.虽然E ...

  5. PCB 加投率计算实现基本原理--K最近邻算法(KNN)

    PCB行业中,客户订购5000pcs,在投料时不会直接投5000pcs,因为实际在生产过程不可避免的造成PCB报废, 所以在生产前需计划多投一定比例的板板, 例:订单 量是5000pcs,加投3%,那 ...

  6. github 用户不被识别问题

    期末考完,继续开发. 用过的都知道,直接用的话贡献者上面显示不出自己. 查一下就知道是因为github的识别是靠邮箱设置的.   但是如果频繁创建新仓库,容易忘记设定用户名和邮箱.   突发奇想,发现 ...

  7. 解决UTF-8方法归纳

    1:通过spring配置过滤器解决 <!-- 配置Spring提供的字符编码过滤器 --> <filter> <filter-name>SpringCharacte ...

  8. Behavior Designer扩展

    BehaviorManager.instance.Tick(behaviorTree); 卸载update里u3d直接卡死 = = SharedVariable直接赋值会改变他的引用关系,必须用XXX ...

  9. 题解报告:hihoCoder #1174:拓扑排序·一

    题目链接:https://hihocoder.com/problemset/problem/1174 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲 ...

  10. [转]Linux下chkconfig命令详解

    转自:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796873.html chkconfig命令主要用来更新(启动或停止)和查询系统 ...