Vue 基于类的组件警告:属性未在实例上定义,但在渲染期间引用

Posted

技术标签:

【中文标题】Vue 基于类的组件警告:属性未在实例上定义,但在渲染期间引用【英文标题】:Vue Class Based Component Warning: Property is not defined on the instance but referenced during render 【发布时间】:2018-12-10 21:49:11 【问题描述】:

我正在尝试使用 vue-class-component 和 typescript(在此处找到 https://github.com/vuejs/vue-class-component)创建一个 vue 组件。据我了解,数据是在类中定义的,正如我在下面所做的那样 - 但我收到错误:

"[Vue warn]: Property or method "test" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property."

这是我实际代码的精简版,但它仍然不起作用:

<template>

  <div id="vue-test">
    <input v-model="test"/>
    test
  </div>

</template>

<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';

@Component(
)
export default class AppearanceDialogVue extends Vue 
  public test: string = '100';


</script>

编辑:似乎将“测试”声明更改为

public test: string;

工作

【问题讨论】:

你试过没有publicstringtest = '100';吗? 您的代码为我运行而没有错误/警告。 我有同样的问题,我尝试了测试声明的所有组合,但无论我做什么都会得到错误。 【参考方案1】:

这里是解决这个问题的方法,需要添加一个构造函数并在构造函数中初始化属性

<template>
<section class="dropdown" style="background-color: #dde0e3">
  <select class="btnList" v-model="foo">
    <option v-for="item in selectedfooData" :value="item" :key="item.id">item</option>
    </select>
    foo
  </section>
</template>

<script lang="ts">
  import  Component, Prop, Vue  from 'vue-property-decorator';
  @Component
  export default class HelloWorld extends Vue   
  private foo: string;
  private selectedfooData : string[] = [
   'one',
   'two'
  ]
  construtor()  
    super();
    this.foo = '';
  

 
</script>

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review 抱歉,已找到解决此问题的方法,编辑了答案@JobinJoseph

以上是关于Vue 基于类的组件警告:属性未在实例上定义,但在渲染期间引用的主要内容,如果未能解决你的问题,请参考以下文章

控制台错误:[Vue 警告]:属性或方法未在实例上定义,但在渲染期间引用

Vue属性或方法未在实例上定义但在渲染期间引用?

Vue警告]:属性或方法“选项”未在实例上定义,但在render.Vue js问题期间引用

Vue警告:属性或方法“item”未在实例上定义,但在渲染期间被引用

[Vue 警告]:未定义属性或方法“$v”

为啥我看到 Vue 警告:“属性或方法“msg”未在实例上定义,但在渲染期间被引用...”