Vue.js 声明的道具上出现意外的vue警告

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

我正在学习vuex。在将一些方法迁移到vuex操作后,我面临一个奇怪的问题。 我在一个工作正常的组件中遇到了这个错误,直到我将一些东西迁移到vuex,并在组件内部实现了
…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详细解释)吗?