javascript - 可折叠 Accordion 组件中的 Vue 加载组件

标签 javascript vue.js vuejs2 bootstrap-4 components

我正在开发一个具有多个 Accordion 式可扩展下拉菜单的页面。它看起来像这样: enter image description here

每个步骤在展开时都会呈现不同的组件。例如,如果展开“Step 1”,它将加载 StepOne.vue 组件。

对于实际的 Accordion 代码,我在这里创建了一个组件:

Accordion.vue(模板)

<template>
<div id="accordion">
  <div class="card">
    <div class="card-header" :id="givenId">
      <h5 class="mb-0">
        <button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
          {{stepStr}} // step 1,2,3 -etc
        </button>
      </h5>
    </div>

    <div id="collapseOne" class="collapse show" :aria-labelledby="givenId" data-parent="#accordion">
      <div class="card-body">
      // I want to load a dynamic component here.
      </div>
    </div>
  </div>
</div>
</template>

我的问题是,我不确定如何使每个折叠步骤加载不同的组件,而不为每个步骤复制粘贴整个折叠 html 代码。

理想情况下,我希望它看起来像这样:

Display.vue

<template>
  // Step 1
  <accordion :id="step-1" :stepStr="'Step 1'">
      <Step-One></Step-One>
  </accordion>

  // Step 2
  <accordion :id="step-2" :stepStr="'Step 2'">
      <Step-Two></Step-Two>
  </accordion>

  // Step 3
  <accordion :id="step-3" :stepStr="'Step 3'">
      <Step-Three></Step-Three>
  </accordion>
</template>

但这是一种无效的方法,或者至少,我不知道如何使其发挥作用。我还考虑将组件作为 Prop 传递,以在 Accordion 中渲染。但这似乎也不是一个有效的解决方案。

如何将组件传递给我的子 Accordion 组件,以便它可以正确渲染每个“步骤”组件?

最佳答案

你可以使用插槽

<slot></slot> 

在您的 Accordion 组件中,您希望在 Accordion 标签之间显示代码。

 <div id="collapseOne" class="collapse show" :aria-labelledby="givenId" data-parent="#accordion">
      <div class="card-body">
          <slot></slot> // I want to load a dynamic component here.
      </div>
    </div>

关于javascript - 可折叠 Accordion 组件中的 Vue 加载组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946047/

相关文章:

vue.js - 为什么我的对象和数组 Prop 变成子组件中的字符串?

提交期间 JavaScript 验证错误

javascript - 通过javascript进行GET查询,页面重新加载,url重写问题

javascript - Angular2 和 InstaFeed 查询

javascript - 我如何制作此幻灯片的动画(通过更改其 src)?

typescript - PhpStorm 中的 "Types are not supported by current JavaScript version"

html - CSS+Vueitfy 填充剩余高度并根据需要添加滚动条

javascript - Next.js 中 babelification 后的对象相等问题

vuejs2 - Vue CLI 图标

vue.js - 如何将 "key"指定为必需的 Prop ?