记录小程序中的坑,持续收集

237 阅读2分钟

记发小程序中的坑

关于地图

  • 地图的高度如果小于239.5px,开发者工具执行以下代码时并未生效
this.mapCtx.includePoints({
  padding: [ 120, 50, 50, 50 ], // 参数ios需要4个值
  points: this.data.points
})
  • 苹果手机执行以上代码中的padding,需要给出四个值,不然点会出屏幕

image.png

  • 如下图布局,在iOS手机上手在下方view层中不停的滑动,会造成地图的滑动,安卓则没有,很诡异!

5DA2F268-4AC6-4270-BC15-4D5517214D45.png

解决方案是:在下方的view层中加catchtouchmove=“false"

<view catchtouchmove="false">
...
</view>

在开发者工具控制台会报警告,在iOS真机上完美避坑。

回退

不能传自定义参数,也不能监听

  • 监听一般采用onUnload,但这个方法需回退之后才会触发,会闪一下上个页面

如果不想用这种效果,只能自定义导航,但是自定义导航也有弊端,就是要计算动态获取,而且页面中如果有定位也要对应计算。

一、获取胶囊按钮的布局位置信息,坐标信息以屏幕左上角为原点:

const menuButtonInfo = wx.getMenuButtonBoundingClientRect();

二、获取系统信息,里面有个参数:statusBarHeight(状态栏高度)

const systemInfo = wx.getSystemInfoSync();

计算公式:导航栏高度 = 状态栏高度 + 44。

  • 传参

1.页面传参在onLoad可能获取其值,在onShow中获取不到。如果是tabBar页面,则可以wx.reLaunch,此方法会把所有栈清空,慎用!

2.找到栈中的路由,再执行相应路由页面的方法

3.在全局变量中设置参数,此方式需要额外对参数处理,如重置等。

应用场景:回退刷新等

tabBar

假设底部有三个tabBar页面:首页,订单,我的

  • 当点击了订单,在路由栈中只有订单,首页没有了,如果这个时候回退会退出小程序
  • 之前已经加载过tabBar页面,onLoad不会再执行
  • tabBar页面,onUnload都不会执行
  • scroll-view的scrolltolower事件有坑,如果当前已是最底部,然后快速上拉还是在最底部,该事件不会再触发,如果缓慢拉动是可以正常触发。

关于地图

上面是展示地图,下面是一个层显示一些内容,地图的高度不是100%占全屏,下方一块区域,在ios手机上手势在操作滑动会把地图拖动,安卓则不会。

image.png

解决方案是在下面的view层加一个属性

<view catchtouchmove="false">
...
</view>

此方法在开发工具控制台会报警告,在ios真机上就不会拖动地图了

(持续更新)