1. 项目中引入vant ui组件库,组件路径报错Component is not found in path "static/vantUi/button/index" (using by "pages......:
2. 引入tabBar图片时,将static前的../去掉;“static/images/home.png”
3. 路由跳转及带参/获取参数
// 跳转
const url = '../order-sure/main?type=1'
wx.navigateTo({
url: url
})
// 获取参数
onLoad: function(option){
this.active = option.type
}
4. 登录
wx.getUserInfo()
不能弹授权框
- 原因:某次小程序api的更新中,微信官方调整了这个方法的使用。根据微信官方解释,
wx.getUserInfo()
可以弹授权框是之前小程序框架不完善导致的bug,我们频繁的使用wx.getUserInfo()
来调起授权框非常影响用户体验,违背了他们设计这个方法的初衷。 - 解决:使用
<button open-type="getUserInfo" bindgetuserinfo="onGotUserInfo">获取用户信息</button>
来调起微信授权。
5.授权
有时授权信息会解密失败
- 原因:微信更改授权方式后,我们只能通过
button
来进行授权的弹窗,授权后通过回调来获取加密的数据,在这个回调中再调用wx.login()
接口获取code
时就会出现这个问题。通过button
获取到的加密数据是上一次登录的session_key
加密的,我们拿到加密数据后再进行wx.login()
就会刷新登录状态,导致session_key
改变,所以就会解密失败。 - 解决:(1)在点击
button
的时候调用wx.login()
方法。
(2)如果是在回调中使用wx.login()
方法,那么在wx.login()
方法的回调中使用wx.getUserInfo()
接口重新获取加密的数据。 -
// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope wx.getSetting({ success(res) { if (!res.authSetting['scope.record']) { wx.authorize({ scope: 'scope.record', success () { // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问 wx.startRecord() } }) } } })
6.交互
-
下拉刷新时ios会出现页面瞬间向上弹出的bug
- 原因:下拉刷新时请求了接口,接口使用了
wx.showLoading()
。 - 解决:请求接口时不要使用
wx.showLoading()
- 原因:下拉刷新时请求了接口,接口使用了
-
wx.showToast()
显示时间和设定时间不一致- 原因:一般是
wx.showLoading()
和wx.showToast()
连用导致的,wx.hideLoading()
会同时把wx.showToast()
也hide掉,虽然微信官方文档说wx.hideToast()
和wx.hideLoading()
需要配对使用,但实际开发中发现两者可以随意使用。
- 原因:一般是
- 解决:使用
wx.hideLoading()
之后再使用wx.showToast()
。
7. 上拉加在更多事件
- 页面自带事件:onReachBottom
- scorll-view组件中事件:bindscrolltolower
- scroll-view组件中的锚点事件:scroll-into-view:值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素