Javascript 能否将组件道具传递给mapGetters vuex
我开始制作一个通用的输入vue组件。在我担心更改输入中的数据之前,我只想从存储中获取初始值 我有这样的想法:Javascript 能否将组件道具传递给mapGetters vuex,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我开始制作一个通用的输入vue组件。在我担心更改输入中的数据之前,我只想从存储中获取初始值 我有这样的想法: <template lang="html"> <input class="input-text" type="text" name="" :value="value"> </template> <script> import store from '@/store/index'; export default { name: '
<template lang="html">
<input class="input-text" type="text" name="" :value="value">
</template>
<script>
import store from '@/store/index';
export default {
name: 'InputText',
props: [
'dataModel',
'propertyName',
],
computed: {
value() {
return store.state[this.dataModel][this.propertyName];
},
},
};
</script>
当我尝试后一种方法时,我得到了
this.dataModel
和this.propertyName
两个值的undefined
。调用映射获取程序时,此
的上下文会更改,因为它们位于新对象中。有没有一种方法可以将组件道具传递到MapGetter
?有没有办法将此的上下文设置为组件而不是对象参数?还是我最初的方法/另一种方法是解决此问题的正确方法?首先,不要导入组件中的存储,它可以作为this.$store
使用,因此请删除:
import store from '@/store/index';
您不能像在mapGetters中那样使用此
,因为它在您尝试使用它的上下文中不存在。在设置属性时,组件仍处于其生命周期的早期。据我所知,名称必须事先定义。我认为您不能使用this
,因为您处于新对象的上下文中,通常在功能块中,您可以执行let self=this
来解决此问题。我想知道的是,是否有任何方法可以将组件道具传递给映射getter我认为不可能动态地分配这样的getter。我尝试了一段时间,但没有找到办法,但那是几个月前的事了。很酷,这对我来说已经足够好了,我有一个有效的解决方案,也许我只是想把这个问题设计得过于复杂。谢谢
import store from '@/store/index';