vue.js - vuex 多module下,子组件获取子模块state失败

查看:196
本文介绍了vue.js - vuex 多module下,子组件获取子模块state失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我的项目目录如下:

apple.js

const state = {
  appleNumer: 0
}
const getters = {
  getAppleNumer: state => state.appleNumer
}
const actions = {
  fetchAppleNumberByIncrement ({commit, state}) {
    //  调用后台接口
    commit('incrementApple')
    console.log('+' + state.appleNumer)
  },
  fetchAppleNumberByDecrement ({commit, state}) {
    //  调用后台接口
    commit('decrementApple')
    console.log('-' + state.appleNumer)
  }
}
const mutations = {
  // 只允许mutations对state进行更改
  incrementApple: state => state.appleNumer++,
  decrementApple: state => state.appleNumer--
}

export default {
  state,
  getters,
  actions,
  mutations
}

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import apple from './modules/apple'

Vue.use(Vuex)

export default new Vuex.Store({
modules: {

// 包含mutation action state一套模型
a: apple

}
})

**Apple.vue**

 <template>
  <div class="">
    <h1>{{ msg }}</h1>
    <h2>appleNumer:{{appleNumer}}</h2>
    <button @click='addOne'>add one</button>
    <button @click='minusOne'>minus one</button>
  </div>
</template>

<script type="text/ecmascript-6">
  export default {
    data () {
      return {
        msg: 'i am apple component'
      }
    },
    methods: {
      addOne () {
        this.$store.dispatch('fetchAppleNumberByIncrement')
      },
      minusOne () {
        this.$store.dispatch('fetchAppleNumberByDecrement')
      }
    },
    computed: {
      appleNumber () {
        console.log('-----------')
        return this.$store.getters.getAppleNumer
      }
    }
  }    
</script>        
    <style lang="stylus" rel="stylesheet/stylus" scoped>        
</style>

在Apple.vue中我通过计算属性appleNumber获取apple.js中的appleNumer,没有获取到,不知道是哪里的问题?

解决方案

this.$store.state.getAppleNumer 能取到吗?

这篇关于vue.js - vuex 多module下,子组件获取子模块state失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆