美文网首页Vue.js程序员Web前端之路
真正掌握vuex的使用方法(四)

真正掌握vuex的使用方法(四)

作者: 张培跃 | 来源:发表于2018-05-19 16:13 被阅读74次

接下来看一下template当中计算总票数的表达式:

<div><h2>总票数:{{nodeVoteCount+vueVoteCount}}</h2></div>

是不是很长?是不是看着它很蓝瘦?
正常的第一反应就是将其写入到计算属性内,方便调用!所以咱们可以将computed调整如下:

 computed:{
    ...mapState(["nodeVoteCount","vueVoteCount"]),
    ...{
        sumCount(){//计算属性,求两个票数之和
             return this.nodeVoteCount+this.vueVoteCount;
        }
    }
}

然后再将template的总票数表达式修改为:

 <div><h2>总票数:{{sumCount}}</h2></div>

是不是有种整个世界都很清静的感脚?哈,还没完,继续!
在咱们的vuex当中,有一个和vue中的computed类似,都是用来计算state然后生成新的状态(数据)的,请记住它的名字叫做------getters。
打开store.js为其添加一常量getters:

//getters为vuex当中的计算属性
const getters={
    //求总票数之和
    sumCount(state){//state即是存储状态的对象
        return state.nodeVoteCount+state.vueVoteCount
    }
}

然后将这个常量放入到Store当中,最终的store.js为:

import Vue from 'vue';//引用vue
import Vuex from 'vuex';//引用vuex
Vue.use(Vuex);//使用vuex
const state={
    nodeVoteCount:1,//node的初始票数
    vueVoteCount:2,//vue的初始票数
};
//生明一个常量mutations,将所有的mutation放入其中
const mutations={
    //为nodeVoteCount加1,voteNum为增加的值,默认加1
    ADDNODEVOTE(state,voteNum=1){//这里的state即是上面定义的state常量
        state.nodeVoteCount+=voteNum;
    },
    //为vueVoteCount加1,voteNum为增加的值,默认加1
    ADDVUEVOTE(state,voteNum=1){//这里的state即是上面定义的state常量
        state.vueVoteCount+=voteNum;;
    }
}
//getters为vuex当中的计算属性
const getters={
    sumCount(state){//state即是存储状态的对象
        return state.nodeVoteCount+state.vueVoteCount
    }
}
export default new Vuex.Store({//暴露Store对象
    state,
    mutations,//将mutations进行暴露
    getters//将getters常量放入到Store当中
})

最后一步,在App.vue当中通过$store.getters调用一下sumCount即可,调用方法:

 <div><h2>总票数:{{$store.getters.sumCount}}</h2></div>

当然,调用getter也有简写的形式,比如我要将上面代码改写成:

 <div><h2>总票数:{{sumCount}}</h2></div>

那么就需要在计算属性内进行一些设置
首先在引入vuex时,添加mapGetters:

import {mapState,mapMutations,mapGetters} from "vuex";

然后将mapGetters添加到computed中:

computed:{
    ...mapState(["nodeVoteCount","vueVoteCount"]),
    ...mapGetters(["sumCount"]),//需要的getter为sumCount
}

修改后的完整App.vue:

<template>
    <div id="app">
        <div><h2>总票数:{{sumCount}}</h2></div>
        <div>
            <img src="./assets/node.png">
            <h3>如何通过node.js对数据进行MD5加密</h3>
            <!--直接调用ADDNODEVOTE-->
            <input type="button" value="投票" @click="ADDNODEVOTE()">
            <!--直接调用ADDNODEVOTE-->
            <input type="button" value="加2" @click="ADDNODEVOTE(2)">票数:{{nodeVoteCount}}
        </div>
        <hr/>
        <div>
            <img src="./assets/vuex.png">
            <h3>真正掌握vuex的使用方法(一)</h3>
            <!--直接调用ADDVUEVOTE-->
            <input type="button" value="投票" @click="ADDVUEVOTE()">
            <!--直接调用ADDVUEVOTE-->
            <input type="button" value="加2" @click="ADDVUEVOTE(2)">票数:{{vueVoteCount}}
        </div>
    </div>
</template>

<script>
    import {mapState,mapMutations,mapGetters} from "vuex";
    export default {
        name: 'App',
        methods:{
            ...mapMutations(["ADDNODEVOTE","ADDVUEVOTE"]),
            ...{
                //写自己定义的方法
            }
        },
        computed:{
            ...mapState(["nodeVoteCount","vueVoteCount"]),
            ...mapGetters(["sumCount"])
        }
    }
</script>

注意 : getter当中的值是不能直接修改的 , 它是根据指定的state的变化而变化的!
今天就到这,未完,待续!


foot.png

相关文章

  • 真正掌握vuex的使用方法(四)

    接下来看一下template当中计算总票数的表达式: 是不是很长?是不是看着它很蓝瘦?正常的第一反应就是将其写入到...

  • 真正掌握vuex的使用方法(六)

    下面咱们来将切换的案例改为vuex来写!首先需要在src目录下,新建一个store文件夹,然后在该文件夹内创建一个...

  • 真正掌握vuex的使用方法(五)

    希望每一位同学可以亲自将每行代码进行一次尝试!记得对于学习代码来讲慢慢来才会更快! 现在咱们先抛开vuex,一起来...

  • 真正掌握vuex的使用方法(一)

    导语:vuex是什么?我的理解就是vuex是一个管理者,管理的方式是集中式管理,管理的对象即是vue.js应用程序...

  • 真正掌握vuex的使用方法(二)

    从上篇文章当中相信大家已经对vuex有了一些大概了解了,接下来咱们结合实例来继续敲代码吧!切记一定要动手实操练习一...

  • 真正掌握vuex的使用方法(三)

    接下来咱们继续使用vuex来完成上篇文章的投票实例。大家一定要记住,学习编程这种事一定要慢慢来才会快!所以一定要将...

  • 真正掌握vuex的使用方法(七)----完结

    今天是关于vuex的最后一篇文章了!怎么说呢?且行且珍惜吧!!认真尝试每一行代码! 之前的文章当中,我们把所有的数...

  • vuex与axios的优化写法

    vuex与axios的优化写法 封装方法 使用方法 vuex: action.js get post put de...

  • Vuex

    今天在博客项目中用到了vuex,记录下vuex 的使用方法。Vuex 是一个专为 Vue.js 应用程序开发的状态...

  • vuex使用记录

    副标题:vuex使用详解、vue使用全局变量、vue使用 store 这篇博客主要记录了 vuex的使用方法,简单...

网友评论

本文标题:真正掌握vuex的使用方法(四)

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