Vue.js 声明的道具上出现意外的vue警告
我正在学习vuex。在将一些方法迁移到vuex操作后,我面临一个奇怪的问题。 我在一个工作正常的组件中遇到了这个错误,直到我将一些东西迁移到vuex,并在组件内部实现了Vue.js 声明的道具上出现意外的vue警告,vue.js,Vue.js,我正在学习vuex。在将一些方法迁移到vuex操作后,我面临一个奇怪的问题。 我在一个工作正常的组件中遇到了这个错误,直到我将一些东西迁移到vuex,并在组件内部实现了…mapGetters和…mapActions 错误为[Vue warn]:属性或方法“isVisible”未在实例上定义,但在渲染过程中被引用 但在我的数据中,我已经声明了道具 data(){ 返回{ id:state.userInfo.id, endCursor:state.userInfo.end\u cursor, nex
…mapGetters
和…mapActions
错误为[Vue warn]:属性或方法“isVisible”未在实例上定义,但在渲染过程中被引用
但在我的数据中,我已经声明了道具
data(){
返回{
id:state.userInfo.id,
endCursor:state.userInfo.end\u cursor,
nextPageLoaded:错误,
isVisible:false,
isVideo:null,
url:null
}
}
&时代;
这是在用户单击home组件以搜索ome数据并加载错误所在的结果组件之后发生的
我怎么能修好它?该错误是否由
…映射获取程序
或…映射操作
引起?状态
在数据
中不可用。根据文档,您可以将实例作为数据函数的第一个参数传递
data: vm => ({
isVisible: vm.$store.state.isVisible
})
。。。但我个人还没有使用过它(它不适用于Typescript,组件仍处于早期生命周期阶段,并且缺少很多东西)。此外,这仅仅是一个赋值(它只运行一次-它不是getter-因此,如果在设置数据
后状态发生变化,数据
将不会对其作出反应。您必须修改数据
属性本身)
因此,您需要使用
…mapState()
(如果它们是vuex状态道具)、…mapGetters()
(如果它们是vuex getter)或使用显式计算语法,将所有与存储相关的组件属性从数据
移动到计算的
:
computed: {
isVisible() {
return this.$store.state.isVisible; // if store state prop
// return this.$store.getters['isVisible'] // if store getter
}
}
如果您还希望能够分配给它(就像分配给数据
属性一样),则必须将上述计算语法(仅getter)替换为getter+setter语法:
computed: {
isVisible: {
get() {
return this.$store.state.isVisible;
},
set(value) {
this.$store.dispatch('setVisibility', value);
// you can also commit mutations `this.$store.commit()` from here
}
}
}
如果您仍有问题,请在codesandbox.io上创建一个,我将帮助您解决。
状态在数据中不可用。根据文档,您可以将实例作为数据函数的第一个参数传递
data: vm => ({
isVisible: vm.$store.state.isVisible
})
。。。但我个人还没有使用过它(它不适用于Typescript,组件仍处于早期生命周期阶段,并且缺少很多东西)。此外,这仅仅是一个赋值(它只运行一次-它不是getter-因此,如果在设置数据
后状态发生变化,数据
将不会对其作出反应。您必须修改数据
属性本身)
因此,您需要使用…mapState()
(如果它们是vuex状态道具)、…mapGetters()
(如果它们是vuex getter)或使用显式计算语法,将所有与存储相关的组件属性从数据
移动到计算的
:
computed: {
isVisible() {
return this.$store.state.isVisible; // if store state prop
// return this.$store.getters['isVisible'] // if store getter
}
}
如果您还希望能够分配给它(就像分配给数据
属性一样),则必须将上述计算语法(仅getter)替换为getter+setter语法:
computed: {
isVisible: {
get() {
return this.$store.state.isVisible;
},
set(value) {
this.$store.dispatch('setVisibility', value);
// you can also commit mutations `this.$store.commit()` from here
}
}
}
如果您仍然有问题,请在codesandbox.io上创建一个,我会帮助您解决。您可以分享您的.mapGetters
代码部分吗?@SajibKhan我已经调试了代码,发现问题不在…mapGetters
问题在数据()
我需要在其中使用映射的getter。关于这方面的任何帮助?…mapGetters
应该在计算的
中使用,而不是在数据
中使用!isVisible
在模板中不可用的原因是数据
函数因状态
未定义而中断。因此,它的内容在模板中都不可用,模板中遇到的第一个未知道具恰好是可见的。你能分享你的。mapGetters
代码部分吗?@SajibKhan我调试了代码,发现问题不在…mapGetters
上,问题在于数据()
我需要在其中使用映射的getter。关于这方面的任何帮助?…mapGetters
应该在计算的
中使用,而不是在数据
中使用!isVisible
在模板中不可用的原因是数据
函数因状态
未定义而中断。因此,模板中没有任何内容可用,模板中遇到的第一个未知道具恰好是isVisible
@alfaun0您能按照这个答案(@tao详细解释)吗?@alfaun0您能按照这个答案(@tao详细解释)吗?