# Vue3 版本隐私对话框调用方式
在 Vue3 中,使用 ref
和组件调用的方式有所变化。以下是修改后的实现:
## 1. 模板部分
<template>
<!-- 其他内容 -->
<lq-privacy-dialog ref="privacyDialog" />
</template>
## 2. Composition API 写法
<script setup>
import { ref } from 'vue'
// 获取对话框引用
const privacyDialog = ref(null)
// 检查隐私权限的方法
const checkPrivacy = () => {
privacyDialog.value?.check({
// 已同意
agree: () => {
// 隐私接口调用逻辑,例如获取位置
uni.getLocation({
success(e) {
console.log(e)
}
})
},
// 不同意
disAgree: () => {
console.log('不同意')
}
})
}
</script>
## 3. Options API 写法
<script>
export default {
methods: {
checkPrivacy() {
this.$refs.privacyDialog.check({
// 已同意
agree: () => {
// 隐私接口调用逻辑,例如获取位置
uni.getLocation({
success(e) {
console.log(e)
}
})
},
// 不同意
disAgree: () => {
console.log('不同意')
}
})
}
}
}
</script>
## 4. 使用方式
在模板中调用:
<button @click="checkPrivacy">请求权限</button>
## 注意事项
1. 确保 lq-privacy-dialog
组件已经适配 Vue3
2. 在 Composition API 中使用 ref
时,需要通过 .value
访问组件实例
3. 使用可选链操作符 ?.
可以避免未初始化时的错误
4. 如果使用 TypeScript,可以为 ref 添加类型声明:
const privacyDialog = ref<InstanceType<typeof LqPrivacyDialog> | null>(null)
这样修改后,功能与 Vue2 版本一致,但使用了 Vue3 的推荐写法。