美文网首页
VUEX笔记

VUEX笔记

作者: 艾满 | 来源:发表于2019-08-27 21:21 被阅读0次

状态管理

当多个组件依赖于同一个数据时,比如购物车和结账,购物车需要作为全局变量,在整个单页面中需要调用的地方调用。在angular 1.X中我们通常用$rootscope来绑定,在vue中可以用VUEX开解决这个问题。

vuex介绍

vuex是一个专门为vue.js设计的集中式状态管理架构,集中存储和管理状态。一个组件的行为--→改变数据--→影响另一个组件的视图(这里影响的实际还是同一个组件,只是这个组件作为了全局变量,可供多处调用)。而管理状态就是对状态(数据)的获取和修改。
vuex组成:state(存放的数据状态,相当于Vue中的data)、getters(对state中的状态进行过滤处理,相当于vue实例中的 computed)、mutations(直接变更状态数据,相当于vue实例中的methods)、actions(间接修改数据,非必须,提交给mutation,异步操作多用actions,,相当于vue实例中的methods)。

vuex使用

添加依赖,使用依赖,创建实例,在vue实例中添加store。

<body>
    <div id="app">
        <template>
          <button @click="add">增加</button>
          <button @click="reduce">减少</button>
          {{countNum}}
        </template>
    </div>
</body>

<script src="https://cdn.bootcss.com/vuex/2.4.1/vuex.js"></script><!--直接引入-->
Vue.use(Vuex);//在创建Vue实例之前
var myStore =  new Vuex.Store({
    state:{
        //存放组件之间共享的数据
        count:0
    },
     mutations:{
         //显式的更改state里的数据
         reduce:function(state){
            state.count--;
         }
     },
     getters:{
         //获取数据的方法
         countNum:function(state){
            return state.count<0?0:state.count;//对返回数据做过滤,减小到0时不让再减小
         }
     },
     actions:{
         //异步方式调用
         add:function(content){
            setTimeout(function(){
                content.commit('add');
             },1000)
         }
     }
});
//创建vue实例
new Vue({
    el:'#app',
    data:{

    },
    store:myStore,//在vue实例中添加store
    computed:{
        countNum:function(){//通过计算得到新的countNum数据,页面可以通过{{}}获取到
            //return this.$store.state.count;
            return this.$store.getters.countNum;//getters方式获取数据
        }
    },
    methods:{
        add:function(){//通过action方式调用
            this.$store.dispatch('add');
        },
        reduce:function(){//通过mutations直接调用
            this.$store.commit('reduce');
        }
    }
})

vuex的几点说明

1.在根组件中引入vuex,根实例中引入store,则全局组件都可以获取到store中的数据,每个组件的this上都绑定的有$store属性,可以通过调用this.$store.state来获取store中的数据。
2.vuex中store的数据不能直接用{{}}在页面上取得,可以通过在vue实例中的computed方法计算后得到一个新数据再展示在页面上。
3.不能在vue实例中改变store的值,需要在vue实例通通过调用this.$store.commit方法来促发mutations中对应的方法。
4.action不是必要的,action一般用于异步操作。
详见:vuex action 与mutations 的区别

相关文章

  • 教你快速明白和搭建Vuex工作环境

    vuex工作工作原理(写给自己看的笔记以加深自己的理解) 一、Vuex工作原理 首先我们先来了解下Vuex: 1...

  • vuex学习笔记

    vuex学习笔记 vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存...

  • Vuex笔记

    Vuex是什么呢? 通俗的说法呢就是: 是一种设计思想,是把所有组件所有状态统一放在一个state空间管理,st...

  • vuex笔记

    一.vuex是用来干什么 vuex是vuejs应用程序的状态管理模式,这个状态可以理解为数据,一个vuejs应用程...

  • vuex笔记

    全局安装vuex 建立独立文件 在页面导入,本例子是在vue-cli中测试,发现一直报错,报错插件为eslint-...

  • VUEX笔记

    状态管理 当多个组件依赖于同一个数据时,比如购物车和结账,购物车需要作为全局变量,在整个单页面中需要调用的地方调用...

  • vuex笔记

    dispatch 方法触发一个action(调用主数据接口)commit 方法触发一个mutation(更新主接...

  • Vuex 笔记 📒

    参考来源: 官方文档 Vex 是什么? vuex 是一个专为 vue 应用程序开发的 状态管理模式。保证状态以一种...

  • Vuex 笔记

    vuex 能干什么? 组件之间的数据共享,有点像单例,全局任何地方需要的时候都能用。比单利牛逼的地方是它有命名空间...

  • Vuex笔记

    1.组件间共享数据的方式 父向子传值:v-bind属性绑定子向父传值:v-on事件绑定兄弟组件间数据共享:Even...

网友评论

      本文标题:VUEX笔记

      本文链接:https://www.haomeiwen.com/subject/nxiyectx.html