Vuex 之state mapState ...mapState 的使用方法

state

Vuex中的state和vue中的data是是类似的。我们称state为状态,该状态存储是响应式的,挂载到组件的计算属性上,举个栗子:当state中有一条属性 number:'10' ,分别挂载到a组件和b组件上,b组件通过commit改变了number的值,那么b组件中的number也是实时改变的(响应式)。

Vuex:(store下的index.js)

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({
  state:{
    age:18,
    name:'张三',
    str:'Hello World!',
    address:'石家庄'
  },
  mutations:{},
  actions:{},
  getters:{},
  modules:{}
})

//导出store对象
export default store;

mapState

案例:

<template>
    <ul>
      <li>{{myname}}</li>
      <li>年龄:{{age}}</li>
      <li>住址:{{myaddress}}</li>
    </ul>
</template>
<script>
import { mapState } from 'vuex'
export default {
   name: 'As',
  components:{
  },
  data(){
    return{
      province:'河北省',
    }
  },
  computed: mapState({
      myname: state => '姓名:'+state.name,              //第一种方式
      age: 'age', //也可以写成 age: state => state.age,  //第二种方式
      myaddress (state){                                //第三种方式
        return this.province + state.address
      }
  })
}
</script>

运行结果:

 

...mapState

mapState 函数返回的是一个对象。但是实际的项目开发中,还会有一些组件自身的局部的计算属性,我们将mapState 函数返回的对象与局部计算属性混合使用,就用到了对象展开运算符,也就是三个点(...)。

案例:

getStr为局部的计算属性。 

<template>
    <ul>
      <li>{{myname}}</li>
      <li>年龄:{{age}}</li>
      <li>住址:{{myaddress}}</li>
      <li>{{getStr}}</li>
    </ul>
</template>
<script>
import { mapState } from 'vuex'
export default {
   name: 'As',
  components:{
  },
  data(){
    return{
      province:'河北省',
    }
  },
  computed: {
    getStr(){
      return '我是本组件中的计算属性'
    },
    ...mapState({
      myname: state => '姓名:'+state.name,              //第一种方式
      age: 'age', //也可以写成 age: state => state.age,  //第二种方式
      myaddress (state){                                //第三种方式
        return this.province + state.address
      }
  })
  }
}
</script>

运行结果:

☼ᴇᴠᴇʀʏᴛʜɪɴɢ ᴡɪʟʟ ʙᴇ ᴏᴋ ☼ 只要来日可期,今天就值得欣喜! ✿✿ヽ(°▽°)ノ✿

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天命爱心职责~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值