【问题标题】:Get reference to vue3 composition api shadowroot获取 vue3 composition api shadowroot 的参考
【发布时间】:2021-12-11 19:27:16
【问题描述】:

如何使用 vue3 composition api 获取对 web 组件 shadowroot 的引用?

使用 Options api 可以:

<script>
export default {
  mounted() {
    const shadowRoot = this.$el.parentNode
  }
}

我尝试使用 getCurrentInstance() 获取它,但无济于事:/

非常感谢任何提示 =)

让它工作:

厕所:

<script setup lang="ts">
import { useWindi } from '../use/useWindi'
defineProps<{ title: string }>()
useWindi()
</script>

钩子:

import { ref, onUpdated, onMounted, getCurrentInstance } from 'vue'

export const useWindi = () => {
  const shadowRoot = ref<ShadowRoot>()

  onUpdated(() => {
    if(!shadowRoot.value) return
    shadowRoot.value.adoptedStyleSheets = [(window as any).windiSheet];
  })

  onMounted(() => {
    shadowRoot.value = getCurrentInstance()?.vnode?.el?.parentNode
    if(!shadowRoot.value) return
    shadowRoot.value.adoptedStyleSheets = [(window as any).windiSheet];
  })
}

我基本上想在我的组件中采用 windicss 样式表。

【问题讨论】:

  • parentNode 指的是一个 DOM 元素。如果它有 shadowRoot,它的:this.$el.parentNode.shadowRoot

标签: vue.js vuejs3 web-component vue-composition-api


【解决方案1】:

我想我明白了:

const shadowRoot = ref(null)

onMounted(() => {
  shadowRoot.value = getCurrentInstance().vnode.el.parentNode
})

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 2021-11-15
    • 2021-06-08
    • 2022-01-25
    • 1970-01-01
    • 2021-04-03
    • 2022-01-23
    • 2021-11-30
    相关资源
    最近更新 更多