微信小程序隐私协议弹窗组件


发布于 2025-04-08 / 2 阅读 / 0 评论 /
# Vue3 版本隐私对话框调用方式 在 Vue3 中,使用 ref 和组件调用的方式有所变化。以下是修改后的实现: ## 1. 模板部分 <template> <!-- 其他内容 --> <lq-privacy-dialog ref="privacyDialog" /> </temp

# 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 的推荐写法。



是否对你有帮助?

评论