如何做到一个vue组件实例对应vuex中的一个模块?

我定义了一个名为ManagePage的vue组件想要作为管理页面的通用组件,通用组件内的data、methods都映射成vuex里面的state、actions 或 mutations。然后,每一个管理页面(比如说:管理车辆信息的页面)是该组件的一个实例,这个组件实例对应了vuex中的具体的一个模块(比如说:this.$store"passport")。

我尝试将模块的命名 "passport/truck" 作为参数(prop:store)传递给ManagePage组件,然后交由mapState,mapActions等方法将vuex中的state、actions 或 mutations映射成组件的data、methods。但是发现mapState的第一个参数的位置没法用到this.store获取得到模块的命名。

代码

想知道应该如何解决?或者有没有另外的解决方案。利用vuex的目的是为了能够在组件的父组件等其它地方能够轻松的调用方法,改变组件内的状态(比如说在组件外调用 openAddItemDialog() 这个mutation,改变 showAddItemDialog这个state,进而修改到控制组件内对话框显示与否的showAddItemDialog变量,弹出对话框)

阅读 2k
2 个回答
新手上路,请多包涵

还是没有找到可以将prop或者data中属性作为mapState的第一个参数的方法,不过用老方法可以解决。

    computed: {
        list() {
            return this.$store.getters[`${this.moduleName}/list`];
        }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题