vuex直接赋值的三种方法

我们在编写vuex代码过程中,觉得在a.vue的模板里面写入例如 <p>{{$store.state.num}}</p>很麻烦,我们希望直接就写成{{num}},我们应该怎么写,vue给出三种固定写法,大家理解之后基本照抄,稍做改动即可

第一种方法 通过computed的计算属性直接赋值

1.store.js(vuex的代码如下):

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

const state={//状态对象

num:1,

}

const mutations={//触发状态

jia(state){

        state.num++;

    },//做加法

jian(state){

        state.num--;

    },//做减法

   

}

export default new Vuex.Store({

state,

mutations,

})

2.你自己组件a.vue代码如下:

<template>

 

    <div>

        <h2>{{msg}}</h2>

        <hr/>

        <h3>{{$store.state.num}}-{{num}}</h3><!--此处要实现{{num}}的写法,需要通过计算属性进行写-->

     

<div>

    <button @click="$store.commit('jia')">+</button>

    <button @click="$store.commit('jian')">-</button>

    

</div>

    </div>

</template>

<script>

    import store from '@/store'

    export default{

        data(){

            return{

                msg:'Hello Vuex',

              

            }

        },

        computed:{

       num(){

        return this.$store.state.num;//这里就是计算属性的写法

        }

        },

        store

        

    }

</script>

<style scoped>

</style>

注意:计算属性写法一定不要忘了给num()与上面的模板要同名

第二种方法  通过mapState的对象来赋值

这种方法更为简单

第一步 a.vue引入mapState 

import {mapState} from 'vuex'

第二步将上面的计算属性改成下面这种写法即可

  computed:mapState({num:state=>state.num}),即可


第三种方法通过mapState的数组来赋值

代码如下所示:

把上面的计算属性直接改成下面这种形式

computed:mapState(["num"])

注:记得加上import {mapState} from 'vuex'



  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值