微信小程序页面多次跳转问题及通过函数节流的解决之道

2025-07-01
来源:万象资讯

微信小程序页面多次跳转解决方法

使用小程序时,有时会遇到这样的问题:网络状况不佳或运行缓慢时,用户可能会误以为操作没有响应,于是反复点击,结果导致页面频繁跳转。

在遇到此类问题时,我们可以借助中的函数节流与函数防抖技术来寻求解决方案。

依据官方文件所述,所谓的函数节流,是指设定一个时间间隔,在此时间段内,仅允许触发事件的回调函数执行一次。若在该时间段内事件被频繁触发,则只有第一次触发会引发函数执行。因此,对.js文件进行如下修改:

(fn, ) {

if ( == null|| == ) {

= 1500

let = () {

let = +new Date()

if ( - > || !) {

fn()

=

. = {

:

///.wxml:

tap

///.js

微信小程序弹窗_小程序JS函数节流_微信小程序页面多次跳转解决方案

获取util变量,其值指向路径为'../..//util.js'的文件。

Page({

data: {

text: \'\'

},

: () {

},

tap:util.( (e) {

.log(this)

.log(e)

.log((()).())

}, 1000)

})

微信小程序页面多次跳转解决方案_微信小程序弹窗_小程序JS函数节流

这样,疯狂点击按钮也只会1s触发一次。

然而,这样做会引发一个问题,即当你试图通过this.data获取this时,或者尝试从微信组件传递给点击事件的函数中获取数据e时,会发现this指向的不是预期的对象,因此函数需要进行一些调整,以确保它能够在微信小程序的页面代码中正常使用。

这种情况之所以发生,是因为我们得到的是一个全新的函数,它已经不再是原始的函数了。这个新函数实际上是对原始函数的一个封装,因此,组件所传递的参数实际上是在这个新封装的函数内部接收的。因此,我们必须将这些参数正确地传递给那个实际需要执行其功能的函数fn。

最后的函数如下:

(fn, ) {

if ( == null|| == ) {

= 1500

小程序JS函数节流_微信小程序页面多次跳转解决方案_微信小程序弹窗

let = null// 返回新的函数  () {

let = +new Date()

if ( - > || !) {

fn.(this, )   //将this和参数传给原函数

=

再次点击按钮this和e都有了:

更多微信小程序视频教程 请关注小程序培训

分享