uni-app小程序刷新当前页面的两种方法

方法一

wx.relaunch来刷新当前页面,页面会被重载,若路由携带参数需自行拼接,方法如下
(如果用电脑打开小程序,该方法有bug)

    /* 获取当前页带参数的url */
    splicePageUrlWithParams(obj) {
        const path = obj.route
        const query = obj.options
        // 拼接url的参数
        var urlWithParams = '/' + path + '?'
        for (let key in query) {
            const value = query[key]
            urlWithParams += key + '=' + value + '&'
        }
        urlWithParams = urlWithParams.substring(0, urlWithParams.length - 1)
        return urlWithParams
    },
    getPageUrl(lastIndex, withParams = true) {
        const pages = getCurrentPages()
        if (pages.length > 0 && pages.length >= lastIndex) {
            const thePage = pages.splice(-lastIndex, 1)[0]
            if (withParams) {
                return this.splicePageUrlWithParams(thePage)
            } else {
                return `/${thePage.route}`
            }
        } else {
            console.log('pages are empty or lastIndex error')
            return ''
        }
    },

上面是获取页面路由和参数的方法,具体使用如下

    reload() {
        // 获取当前页面路由 具体请看该函数的实现
        const url = this.getPageUrl(1) 
        uni.reLaunch({
            url,
            success: () => {
                console.log('reload触发了!!!!!! url====>' + url)
                }
            }
        })
    }

方法二(推荐)

通过获取该页面实例执行其内部的生命周期方法来刷新页面

    reload() {
        // 页面重载
        const pages = getCurrentPages()
        // 声明一个pages使用getCurrentPages方法
        const curPage = pages[pages.length - 1]
        // 声明一个当前页面
        curPage.onLoad(curPage.options) // 传入参数
        curPage.onShow()
        curPage.onReady()
        // 执行刷新
    },
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxyGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值