从动态组件列表中的父组件读取道具

Posted

技术标签:

【中文标题】从动态组件列表中的父组件读取道具【英文标题】:Read props from parent component in a list of dynamic components 【发布时间】:2020-02-14 11:24:56 【问题描述】:

我在通过 Vue.js 中的 props 从父级到子级读取传递的数据时遇到问题。我有一个组件列表

components: [
        
          name: "Cart Overview",
          component: "CartOverview",
          props: this.shopperCart
        ,
        
          name: "Bank Account Overview",
          component: "BankAccountOverview",
          props: 
        ,
         name: "Verification", component: "Verification", props:  ,
        
          name: "Completion Message",
          component: "CompletionMessage",
          props: 
        
      ]

变量“shopperCart”由来自后端的请求设置。

父组件的模板

<div class="modal-body">
  <component
    :is="checkoutComponents[currentStep].component"
    v-bind="checkoutComponents[currentStep].props"
  ></component>
</div> 

用户可以通过设置变量 currentStep 的下一步按钮来浏览组件。

一个子组件的示例

<template>
  <div>
    <h1>Cart Oerview</h1>
     shopperCart 
  </div>
</template>
<script>
export default 
  name: "CartOverview",
  props: 
    shopperCart:  type: Object, default: () =>  
  ,
  mounted() 
    console.log("shopperCart", this.shopperCart);
  
;
</script>

组件位于模态框上。日志输出仅在我刷新页面时显示未定义,我可以在其中打开模式。

有人可以帮帮我吗?

最好的问候, A.梅伦

【问题讨论】:

【参考方案1】:

我找到了自己的解决方案。我在父组件中将v-bind 更改为:data

<div class="modal-body">
  <component
    :is="checkoutComponents[currentStep].component"
    :data="checkoutComponents[currentStep].props"
  ></component>
</div> 

在子组件中是道具的名称

<template>
  <div>
    <h1>Cart Oerview</h1>
     data 
  </div>
</template>
<script>
export default 
  name: "CartOverview",
  props: 
    data:  type: Object, default: () =>  
  ,
  mounted() 
    console.log("shopperCart", this.data);
  
;
</script>

现在可以了:-)

【讨论】:

以上是关于从动态组件列表中的父组件读取道具的主要内容,如果未能解决你的问题,请参考以下文章

与 Vue 中的父级同步道具?

VueJS如何使用组件中的父方法

如何将道具传递给vue中的子组件

将道具动态传递给VueJS中的动态组件

在选择选项更改时将子组件中的道具传递给父组件

Reactjs、父组件、状态和道具