首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用v-slot (作用域-插槽)时访问此.$插槽

在使用v-slot (作用域-插槽)时访问此.$插槽
EN

Stack Overflow用户
提问于 2020-07-03 21:20:13
回答 1查看 2.3K关注 0票数 1

在特定的用例中,我必须访问插槽中的DOM元素以获得其呈现的widthheight。对于普通插槽,这是通过访问this.$slots.default[0].elm来实现的。

现在我添加了一个作用域插槽来访问组件内部的数据,这导致this.$slots为空并破坏了我的代码。

如何访问使用slot-scope的slot的DOM元素?

基本示例代码(请注意,使用作用域插槽时,this.$slots结果为{};使用普通插槽时,结果为{default: Array(1)}):

App.vue

代码语言:javascript
复制
<template>
  <div id="app">
    <HelloWorld v-slot="{ someBool }">
      <p>{{ someBool }}</p>
      <h1>Hello</h1>
    </HelloWorld>
    <HelloWorld>
      <h1>Hello</h1>
    </HelloWorld>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue';

export default {
  name: 'App',
  components: {
    HelloWorld,
  },
};
</script>

HelloWorld.vue

代码语言:javascript
复制
<template>
  <div class="hello">
    <slot :someBool="someBool" />
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
      someBool: false,
    };
  },
  mounted() {
    console.log(this.$slots);
  },
};
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 22:36:20

使用$scopedSlots,它包括范围插槽和非范围插槽:

代码语言:javascript
复制
export default {
  mounted() {
    console.log(this.$scopedSlots.default())
  }
}

demo

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62716321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档