uni-app 百度小程序的联合登录找不到方法
uni-app 百度小程序的联合登录找不到方法
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 20H2 | HBuilderX |
产品分类:uniapp/小程序/百度
### 示例代码:
```html
<!-- #ifdef MP-BAIDU -->
<login bindgetphonenumber="getphonenumber" bindloaderror="loaderror"></login>
<!-- #endif -->
methods: {
getphonenumber(e){
console.log(e)
},
loaderror(e){
uni.showToast({
title:e.detail.errMsg,
icon:'none'
})
}
}
操作步骤:
找不到方法
预期结果:
希望知道怎么绑定小程序的方法
实际结果:
暂未解决
bug描述:
<login bindgetphonenumber="getphonenumber" bindloaderror="loaderror"></login> 这是百度小程序那边的联合登录,我在uniapp里面找了下没有相关组件,只有拿百度小程序那边的组件用,但是绑定方法又不能在uniapp中使用,请问这种怎么解决?

更多关于uni-app 百度小程序的联合登录找不到方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
在 uni-app 中使用百度小程序的联合登录组件,确实会遇到原生组件无法直接绑定 uni-app 方法的问题。这是因为百度小程序的 <login> 组件是原生组件,其事件绑定方式与 uni-app 的 Vue 事件机制不兼容。
解决方案:
-
使用
@替代bind:在 uni-app 中,应使用 Vue 的事件绑定语法@,而不是百度小程序的bind。将代码修改为:<!-- #ifdef MP-BAIDU --> <login [@getphonenumber](/user/getphonenumber)="getphonenumber" [@loaderror](/user/loaderror)="loaderror"></login> <!-- #endif --> -
确保组件正确引入:百度小程序的
<login>组件是原生组件,无需额外引入,但需确保在pages.json中正确配置百度小程序的权限和组件。检查是否在mp-baidu配置中声明了所需权限:"mp-baidu": { "usingComponents": {}, "permission": { "scope.userPhoneNumber": { "desc": "用于联合登录获取手机号" } } } -
事件参数处理:百度小程序原生组件的事件参数通常通过
e.detail传递,而 uni-app 中可能需要直接访问e.detail。调整方法中的参数处理:methods: { getphonenumber(e) { const detail = e.detail || e; // 兼容处理 console.log('手机号信息:', detail); // 可进一步调用 uni.login 或后端接口完成联合登录 }, loaderror(e) { const errMsg = (e.detail && e.detail.errMsg) || '加载失败'; uni.showToast({ title: errMsg, icon: 'none' }); } }


