vue之vuex的简单使用简化写法

store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
//状态对象
const state={
  counter:0
}
//包含多个更新state函数的对象
const mutations={
  ADD(state){
    state.counter++
  },JJ(state){
    state.counter--
  }
}
//包含多个事件回调函数的对象,actions调用mutations
const actions={
  add({commit}){
    commit('ADD');
  },
  jj({commit}){
    commit('JJ');
  },
  //待条件的action
  jjadd({commit,state}){
    if(state.counter%2===1)
    commit('ADD');
  },
  autoadd({commit}){
    setTimeout(()=>{
      commit('ADD');
    },1000)
  }
}
//包含多个更新state函数的对象
const getters={
  desc(state){//不需要亲自调用,只需要读取属性值
    return state.counter%2===0?'偶数':'奇数';
  }
}
export default new Vuex.Store({
  state,//状态对象
  mutations,//包含多个更新state函数的对象
  actions,//包含多个事件回调函数的对象
  getters//包含多个getter计算属性函数的对象
})

mian.js

//入口js,创建vue实例
import Vue from 'vue'

import App from './App.vue'

import store from './store'


new Vue({
  el:'#app',
  components:{
    App,

  },
  template:'<App/>',
  store,//所有的组件对象都多了一个$store属性
})

vue.app

<template>
<div>
<!--  <p>clicked  {{$store.state.counter}},counter is {{desc}}</p>-->
  <p>clicked  {{counter}},counter is {{desc2}} </p>
  <p>
    <button @click="add">+</button>
    <button @click="jj">-</button>
    <button @click="jjadd">奇数+1</button>
    <button @click="autoadd">过一秒自动+1</button>
  </p>
</div>

</template>

<script>
/*简化代码,(模板里数据尽量和store里的属性)尽量同名,同名直接用数组,不同名用map来对应*/
import {mapState,mapGetters,mapActions} from 'vuex';
export default {

  name:'App',
  data(){
    return {

    }
  },
  computed:{
    ...mapState(['counter']),
    ...mapGetters({desc2:'desc'}),/*不同名的情况*/
  },
  methods:{
    ...mapActions(['add','jj','jjadd','autoadd']),
  }

} 
</script>
<style>


</style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值