在vue3+ts的语法里,子组件中给 uni-popup 添加 ref 属性,怎么在父组件中通过 $refs 访问 uni-popup,不用this
时间: 2024-02-01 09:14:10 浏览: 130
在 Vue 3 中,可以使用 `setup` 函数来访问子组件的 `ref`。在子组件中,需要使用 `defineExpose` 函数来暴露 `ref` 给父组件使用。
以下是一个简单的示例:
子组件:
```html
<template>
<uni-popup ref="popupRef"></uni-popup>
</template>
<script lang="ts">
import { defineComponent, ref, defineExpose } from 'vue'
export default defineComponent({
setup() {
const popupRef = ref(null)
// 暴露 popupRef 给父组件使用
defineExpose({
popupRef
})
return {
popupRef
}
}
})
</script>
```
父组件:
```html
<template>
<div>
<button @click="showPopup">显示弹框</button>
<uni-popup ref="childRef"></uni-popup>
</div>
</template>
<script lang="ts">
import { defineComponent, onMounted } from 'vue'
export default defineComponent({
setup() {
const childRef = ref(null)
onMounted(() => {
console.log(childRef.value.popupRef)
})
const showPopup = () => {
// 通过 $refs 访问子组件的 popupRef
childRef.value.popupRef.show()
}
return {
childRef,
showPopup
}
}
})
</script>
```
在父组件中,我们使用 `ref` 给子组件命名为 `childRef`,然后在 `onMounted` 钩子函数中,可以通过 `childRef.value.popupRef` 访问子组件中的 `popupRef`。
阅读全文