Vue动态地图

jas*_*ode 3 javascript vue.js vuex vuejs2

我有一个要用来制作动态mapGetters的道具,但mapGetters认为道具是未定义的,这可能是因为在道具之前已加载了计算对象。有人知道我如何使它动态吗?我的代码如下:

export default {
    props: ['listType'],
    components: {
        addrow: AddRow
    },
    computed: {
        ...mapGetters({
            list: `${this.listType}/list`,
            current: 'Dropdown/current'
        }) 
    },
}
Run Code Online (Sandbox Code Playgroud)

jas*_*ode 5

[更新]感谢@boussadjrabrahim,我找到了解决方案。我的工作代码如下:

export default {
    props: ['listType'],
    components: {
        addrow: AddRow
    },
    computed: {
        ...mapGetters({
            current: 'Dropdown/current'
        }), 

        ...mapState({
            list (state, getters) {
                return getters[`${this.listType}/list`]
            }
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对于吸气剂非常有效。关于如何采取行动有什么想法吗? (2认同)

sam*_*ied 5

您还可以使用它this.$store来完全访问商店。那么,list就会变成

export default {
    props: ['listType'],
    computed: {
        list() {
            return this.$store.getters[`${this.listType}/list`]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用dispatch方法触发一个动作,就像这样

export default {
    props: ['listType'],
    methods: {
        sortList(order) {
            this.$store.dispatch(`${this.listType}/list`, order)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)