小程序开发遇到的坑

做了一小段时间的微信小程序开发,踩了不少坑,在这里做一下总结:

1、在 app.jsonShowonHidegetCurrentPages() 查询页面栈,可能获取到空数组

发现时间:20180517

系统环境:IOS

如果有在这两个场景使用,建议对当前页面对象进行判断是否为undefined

2、tabBar页面 wx.getSystemInfowindowHeight 小于实际高度(大约少了一个tabBar的距离)

发现时间:20180517

系统环境:android部分机

3、tabBar页面Page的onTabItemTap事件在首次切换不会触发,要在页面onShow后再切换才触发

发现时间:20180517

系统环境:iOS

sdk 1.9.97有问题、更新到2.0.7正常

4、button的border无法去掉?

小程序的open-typebutton特有的属性,所以使用小程序原生button组件在所难免,比如:

1
2
3
<button open-type="share" class="btn">
点击分享
</button>

但是原生的button可能不太适合业务,所以需要去掉默认样式,比如去掉背景色和边框:

1
2
3
4
.btn {
background-color: transparent;
border: 0;
}

咦!意不意外?背景是去掉了,边框还在。。。
原来原生button的边框是写在 伪元素 after的,所以,需要这样才能去掉:

1
2
3
.btn::after {
border: 0;
}

5、canvas.draw回调一直不执行,也没报错(sdk在1.7.1以上都不可以)

前往社区类似问题反馈

如果你用了很多方式也排查不出原因,可以试下把绘画的canvas标签放到page页面级别的html,而不是放到自定义的组件html。貌似放到自定义组件,无法找到画布,导致绘画不成功(它没报错,但回调又不执行)。

回头看来官方api,原来createCanvasContext方法有第二个参数 Object this

在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 canvas-id 的 ,如果省略则不在任何自定义组件内查找