携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情 小程序虽然没有安卓语言强大,但是内容和api还是很丰富的。有一些不常用的api常常被我们忽略,我们一起看看吧~
wx.nextTick
延迟一部分操作到下一时间片执行(类似setTimeout)
tips: 对于不需要在一个同步流程内完成的逻辑,可以使用此接口延迟到下一个时间片再执行
背景:因为自定义组件中的 setData 和 triggerEvent 等接口是同步的操作,当被同时连续调用时,很有可能会因为处理不当而导致出错。
wx.getMenuButtonBoundingClientRect()
获取菜单按钮(右上角胶囊按钮)的布局位置信息。坐标信息以屏幕左上角为原点
const res = wx.getMenuButtonBoundingClientRect()
console.log(res.width) // 宽度(px)
console.log(res.height)// 高度(px)
console.log(res.top) // 上边界坐标(px)
console.log(res.right) // 右边界坐标(px)
console.log(res.bottom)// 下边界坐标(px)
console.log(res.left) // 左边界坐标(px)
wx.hideHomeButton
隐藏返回首页按钮,当用户打开的小程序最底层页面是非首页时,默认展示“返回首页”按钮,开发者可在页面 onShow 中调用 hideHomeButton 进行隐藏。
wx.enableAlertBeforeUnload
开启小程序页面返回询问对话框。真机有效,开发者工具不生效。
弹窗生效的前提
- 当前页面在小程序内非首页页面/最底层页
- 官方导航栏上的的返回
- 全屏模式下自绘返回键
- android 系统 back 键时
tips
- 手势滑动返回时拦截不生效
- 此功能无法阻止用户退出小程序的行为
- 需要配合
wx.disableAlertBeforeUnload使用 - 在onShow中调用该接口
wx.disableAlertBeforeUnload
关闭小程序页面返回询问对话框。
使用wx.enableAlertBeforeUnload的时候,需要配合在onUnload生命周期中,将弹框取消,否则会有问题。
代码如下
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.enable()();
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
this.disable();
},
enable() {
wx.enableAlertBeforeUnload({
message: '离开此页后数据将会被清空哦~',
success(res) {
console.log('success:', res)
},
fail(res) {
console.log('fail:', res)
},
complete(res) {
console.log('complete:', res)
}
})
},
disable() {
wx.disableAlertBeforeUnload({
success(res) {
console.log('success:', res)
},
fail(res) {
console.log('fail:', res)
},
complete(res) {
console.log('complete:', res)
}
})
}
效果如下: