为什么我在v-for的插槽中只有一个元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我在v-for的插槽中只有一个元素?相关的知识,希望对你有一定的参考价值。

在我的Vue应用程序代码中,我有一个刷卡器组件。在这个组件中,我有一个v-for和一个插槽。

在父组件(Foo)中,我需要通过引用捕获放入插槽中的组件(baz)。问题是它的返回值仅一个元素而不是数组,就像我这样。

如何保持组件的这种形状并仍然获得我期望的数组?有可能吗?

import Vue from "vue";

Vue.config.productionTip = false;

const Foo = {
  template: `
    <div>
    <swiper :items="items">
    <baz ref="baz"/>
    </swiper>
    </div>
  `,
  data: function() {
    return {
      items: [1, 2, 3, 4, 5]
    };
  },
  mounted: function() {
    this.$nextTick().then(() => {
      console.log({ refs: this.$refs.baz });
    });
  }
};

const Baz = { template: "<div>im baz</div>" };

const Swiper = {
  template: `
    <div class="swiper">
    <div v-for="(item, i) in items" :key="i">
        <slot></slot>
    </div>
    </div>
    `,
  props: ["items"]
};


Vue.component("foo", Foo);
Vue.component("baz", Baz);
Vue.component("swiper", Swiper);

new Vue({
  render: h => h(Foo)
}).$mount("#app");
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.js"></script>
答案
None

以上是关于为什么我在v-for的插槽中只有一个元素?的主要内容,如果未能解决你的问题,请参考以下文章

插槽分发内容

如何使组件使用 v-for 具有动态插槽

Vues - 如何在渲染函数中使用 v-for 和作用域插槽

react-插槽(Portals)

Vuejs:模板只有一个根元素,但编译失败说它应该只有一个根元素

vue.js-使用插槽分发内容的三个示例