v-bind的vuejs动态组件抛出错误:是,错误是Property或method ...未在实例上定义但在渲染期间被引用

时间:2018-10-19 16:47:12

标签: javascript vue.js vuejs2 components

文件中的代码:

<template>
  <component v-bind:is="bbc"></component>
</template>

<script>

import bbc from './bbc.vue';

  export default {
    name: 'ShowRoom2',
  };
</script>

./bbc.vue

<script>
  export default {
    name: 'bbc',
    props: {
      msg: String,
    },
    mounted() {
      console.log('bbc is mounted');
    },
    render() {
      if (this.func) this.func();
      return (
        <div class="bbcMyClass">
          <h1>bbc: <span>Pal</span> <span>{this.msg}</span></h1>
        </div>
      )
    }
  };
</script>

再现

  1. git clone git@github.com:adamchenwei / vue-hoc-playground.git
  2. 转到src/components/ShowRoom2.vue
  3. 纱线安装和纱线服务
  4. 在本地浏览器中观察错误

enter image description here

1 个答案:

答案 0 :(得分:2)

是的,模板中的作用域与脚本作用域不同。如果需要一些数据,则需要在代码的“组件”定义部分内声明它们。对于您的情况,我想'data'属性应该可以工作

import bbc from './bbc.vue';

export default {
  name: 'ShowRoom2',
  data() {
    return {
      bbc: bbc,
    };
  },
};

但是,代码的模板部分看起来也很奇怪。您能解释一下您要做什么吗?