uni-app 4.76版本 vue3 组合式API 在支付宝/钉钉小程序端 获取不到组件实例 showModal报错
uni-app 4.76版本 vue3 组合式API 在支付宝/钉钉小程序端 获取不到组件实例 showModal报错
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 14.4.1 | HBuilderX |
示例代码:
<template>
<view>
<uv-picker ref="picker" :columns="columns" />
<button @click="openPicker">打开</button>
</view>
</template>
<script setup>
import {
ref
} from 'vue'
const columns = ref([['中国', '美国', '日本']])
const picker = ref()
const openPicker = () => {
picker.value.open()
}
</script>
操作步骤:
- 运行到支付宝小程序开发工具
- 点击“打开”按钮
预期结果:
- 弹出picker
实际结果:
- 报picker.value是空
bug描述:
获取不到组件实例,代码在代码示例。注:uv-picker是uv-ui框架里的组件,可在插件市场搜索导入。
还有uni.showModal报错,就随便写个标准的uni.showModal,报错信息:showModal:fail 当前端不支持此API:device.notification.extendModal。
在HBuilderX4.76版本,以上两个BUG在微信小程序不出现,只在支付宝端复现。 HBuilderX切换到4.45版本后,BUG不再出现。
更多关于uni-app 4.76版本 vue3 组合式API 在支付宝/钉钉小程序端 获取不到组件实例 showModal报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
manifest.json mp-alipay 节点下加配置,试试能不能解决 ref 失效的问题
“compileOptions”: {
“component2”: true
}
更多关于uni-app 4.76版本 vue3 组合式API 在支付宝/钉钉小程序端 获取不到组件实例 showModal报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
赞,有效!
showModal 你是怎么写的,试试原生那样写有没有报错
就是一个最基础的showModal uni.showModal({ title: ‘温馨提示’, content: ‘您暂无教师管理权限’, showCancel: false }) 报错信息:{errMsg: ‘showModal:fail 当前端不支持此API:device.notification.extendModal’}
回复 DCloud_UNI_JBB: 用原生写了下,确实也会报错。然后看了下vendor.js的showModal源码,老版本底层是用confirm和alert的结合体,新版本是直接用的showModal。根源问题还是在钉钉端的showModal,可能是基础库的问题,不过HBuilderX的问题算是解决,非常感谢大佬~
回复 1***@qq.com: 可以在钉钉社区翻一下,看看有没有人反馈这个问题
回复 DCloud_UNI_JBB: 看了下钉钉文档 https://open.dingtalk.com/document/isvapp/jsapi-show-modal 他的showModal跟一般的不一样,加了个cells参数,文档写着非必填,但是真机调试不填会报错。title和content必须写在cells的数组里,还有个image参数,不填就是张灰色默认图片,意思就是说他这个modal是必会展示图片,不是传统的modal,然后跟cells同级的title和content是没用的无效参数。。。钉钉这文档写的真跟shit一样。
回复 1***@qq.com: 只能恢复到4.45软件版本吗,在哪下载的呢
回复 x***@dingtalk.com: https://hx.dcloud.net.cn/Tutorial/HistoryVersion
回复 DCloud_UNI_JBB: 有考虑换个网盘吗,这个网盘必须花钱才能下载,负责速度就很慢呢
回复 x***@dingtalk.com: 暂时没
在uni-app 4.76版本中,支付宝/钉钉小程序端确实存在组件实例获取异常和API兼容性问题。这主要是由于新版基础库对支付宝小程序环境的适配存在缺陷。
对于组件实例获取问题:
- 在组合式API中,ref引用组件时可能因生命周期不同步导致实例未正确挂载
- 建议添加null检查:
picker.value?.open() - 可尝试使用nextTick确保组件渲染完成:
import { nextTick } from 'vue'
const openPicker = async () => {
await nextTick()
picker.value?.open()
}


