Taro使用微信插件无法调用onSuccess回调问题
- 小程序后台添加插件
- 在开放社区购买相应的套餐
- 详细步骤
- 1.在app.config.js中添加如下代码
- 2.在页面的page.config.js添加插件
- 3.使用ocr-navigator识别身份证
小程序后台添加插件
在开放社区购买相应的套餐
购买地址
详细步骤
1.在app.config.js中添加如下代码
plugins: {
'ocr-plugin': {
version: '3.1.5',
provider: 'wx4418e3e031e551be',
},
},
2.在页面的page.config.js添加插件
usingComponents: {
'ocr-navigator': 'plugin://ocr-plugin/ocr-navigator',
},
3.使用ocr-navigator识别身份证
<ocr-navigator
@onSuccess="handleSuccess"
certificateType="idCard"
:opposite="false"
>
<button>点击上传正面</button>
</ocr-navigator>
- 问题来了官方文档上原生组件使用的是bind:onSuccess=“success” 改成vue模板应该就是@onSuccess 可实际情况是身份证识别成功了但为进入
onSuccess回调。纳闷了很久之后发现taro官网文档有详细介绍原生组件派发事件的例子:
- 小程序原生组件派发的事件名区分大小写,并且支持 -。
模板绑定语法 | 事件名称 |
---|---|
bindmyEvent / bind:myEvent | myEvent |
- 在 JSX 中事件绑定语法为 onCamelCase,它的单一性无法适配小程序原生组件事件名的多样性。
因此 Taro 只能根据开发者 JSX 的事件绑定语法,遵循以下规则生成对应的模板绑定语法(在区分原生组件派发的事件名大小写的情况下,需要使用一个 bind 属性进行 hack 处理):
JSX事件绑定语法 | 模板绑定语法 | 事件名称 |
---|---|---|
<Comp onMyEvent={} bindmyEvent | bindmyEvent | myEvent |
- Vue 绑定事件时虽然支持 -,但对大小写不敏感。因此针对不同的事件名需要编写不同的 Vue Template 语法,大小写敏感时同样也需要使用 bind 属性进行 hack 处理:
Vue Template 语法 | 模板绑定语法 | 事件名称 |
---|---|---|
<comp @myevent=‘’ bindmyEvent | bindmyEvent | myEvent |
vue最终添加 bindonSuccess 回调改成小写 @onsuccess
<ocr-navigator
@onsuccess="handleSuccess"
bindonSuccess
certificateType="idCard"
:opposite="false"
>
<button>点击上传正面</button>
</ocr-navigator>