微信小程序页面多次跳转解决方法
使用小程序时,有时会遇到这样的问题:网络状况不佳或运行缓慢时,用户可能会误以为操作没有响应,于是反复点击,结果导致页面频繁跳转。
在遇到此类问题时,我们可以借助中的函数节流与函数防抖技术来寻求解决方案。
依据官方文件所述,所谓的函数节流,是指设定一个时间间隔,在此时间段内,仅允许触发事件的回调函数执行一次。若在该时间段内事件被频繁触发,则只有第一次触发会引发函数执行。因此,对.js文件进行如下修改:
(fn, ) {
if ( == null|| == ) {
= 1500
let = () {
let = +new Date()
if ( - > || !) {
fn()
=
. = {
:
///.wxml:
tap
///.js
获取util变量,其值指向路径为'../..//util.js'的文件。
Page({
data: {
text: \'\'
},
: () {
},
tap:util.( (e) {
.log(this)
.log(e)
.log((()).())
}, 1000)
})
这样,疯狂点击按钮也只会1s触发一次。
然而,这样做会引发一个问题,即当你试图通过this.data获取this时,或者尝试从微信组件传递给点击事件的函数中获取数据e时,会发现this指向的不是预期的对象,因此函数需要进行一些调整,以确保它能够在微信小程序的页面代码中正常使用。
这种情况之所以发生,是因为我们得到的是一个全新的函数,它已经不再是原始的函数了。这个新函数实际上是对原始函数的一个封装,因此,组件所传递的参数实际上是在这个新封装的函数内部接收的。因此,我们必须将这些参数正确地传递给那个实际需要执行其功能的函数fn。
最后的函数如下:
(fn, ) {
if ( == null|| == ) {
= 1500
let = null// 返回新的函数 () {
let = +new Date()
if ( - > || !) {
fn.(this, ) //将this和参数传给原函数
=
再次点击按钮this和e都有了:
更多微信小程序视频教程 请关注小程序培训