【问题标题】:How to pass an imported component through props?如何通过 props 传递导入的组件?
【发布时间】:2019-08-22 14:12:36
【问题描述】:

有没有一种方法可以通过 props 将组件从父组件传递给子组件,而无需从子组件导入?

父组件

<template>
  <ChildComponent :component="componentName">
</template>
<script>
  import componentName from '@/components/componentName.vue'
</script>

子组件

<template>
   <div>
      <component :is="component">
   </div>
</template>
<script>
  props: {
    component: Object
  }
</script>

目前,在此设置中,我收到 未知自定义事件 您是否正确注册了组件? 错误。我知道它希望我在子组件中注册组件,但我不想从子组件中导入组件。有没有办法通过道具将导入传递给孩子?这不可能吗?

【问题讨论】:

    标签: javascript vue.js vue-component


    【解决方案1】:

    你真的很亲密,问题出在你的第一个模板中:

    <template>
      <ChildComponent :component="componentName">
    </template>
    <script>
      // this is not available in template scope
      import componentName from '@/components/componentName.vue'
    
      export default {
        data: {
          // this, however, is available!
          componentName
        }
      }
    </script>
    

    【讨论】:

    • 啊,这很有道理。想了想,这也算不了什么。感谢您的帮助
    【解决方案2】:

    你错过了export default

    parent.vue:

    <template>
      <ChildComponent :component="componentName">
    </template>
    <script>
      import componentName from '@/components/componentName.vue'
    
      export default {
        data() {
          return {
            componentName
          }
        },
      }
    </script>
    

    child.vue:

    <template>
       <div>
          <component :is="component">
       </div>
    </template>
    <script>
    export default {
      props: {
        component: Object
      },
    }
    </script>
    

    【讨论】:

    • 您的代码有问题,数据应该是 return 对象的函数或 ar 对象。但不能两者兼而有之!而且我真的看不出您的答案与我的答案有何不同:/
    猜你喜欢
    • 2019-06-08
    • 2021-01-11
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2021-05-25
    • 2020-06-12
    • 2021-12-26
    • 2020-09-19
    相关资源
    最近更新 更多