看了别的组件库,目前已经找到一种解决方案: 就是直接通过 `useSlots()` 获取插槽的 vNode,然后手动渲染,并绑定ref。 代码如下: import {ref, useSlots} from 'vue' const triggerRef = ref() const floatingRef = ref() const slots = useSlots() const triggerArr = slots?.trigger?.() // 获取vNode(真实场景,这一步需要校验插槽传过来的值。如果值是字符串或多个元素等情况,需要进一步处理) const TriggerVNode = triggerArr[0] ~~但是这样有个缺点,WebStorm 写插槽的时候不会有提示,甚至有警告~~ ## 更新 以上问题可以通过 Vue3.3 新增宏 `defineSlots()` 来解决,`defineSlots()` 用于定义插槽。 具体使用 [查看Vue文档](https://link.segmentfault.com/?enc=lRF6ltrPEyWVGHhWSuoZFw%3D%3D.i%2FZi5ddWuvCESqW%2FfB6pcDLtDCTKDQGknutFL%2F6932%2FKyVG2eXj5%2BBYar9KQFpm%2FcsUfT%2BgfC%2BmVtlx%2BUsS7rA%3D%3D)