jtshushu
jtshushu
  • 发布:2020-06-06 17:56
  • 更新:2023-03-25 14:45
  • 阅读:5879

uni-app返回页面不触发页面刷新问题 A页面到B页面B页面返回A页面刷新数问题

分类:uni-app

uni-app返回页面不触发页面刷新问题 A页面到B页面B页面返回A页面刷新数问题

A页面加入

onHide(){  
            console.log('this.ifOnShow=true')  
            this.ifOnShow=true  
        },  

onShow(){  
            if(this.ifOnShow){  
              //这是要刷新的数据  
                this.getUserRoleId()  
                this.getWorkDetails(this.orderDetails)  
                console.log('工单详情',this.orderDetails)  
            }  
        },  

data() {  
            return {  
              ifOnShow:false,  

    }  

} 

最后解决

我们在用 uni-app 开发前端时,有时在返回上一页后要刷新上一页的数据,如登录后返回上一页刷新登录状态。我们可以通过 uni.navigateBack 的成功回调函数来实现。具体实现方式如下:

要打开登录页面的主页面中的主要代码如下

<template>  
    <view>  
        <button class="cu-btn" @tap="toView('login/login')">登录</button>  
    </view>  
</template>  

<script>  
    export default {  
        methods: {  
            toView(page) {  
                uni.navigateTo({  
                    url: `/pages/${page}`  
                })  
            }  
        },  
        onLoad(option) {  
            console.info('调用了 onLoad:' + option)  
        }  
    }  
</script>  
登录页面主要代码如下  

<template>  
    <view>  
        <button class="cu-btn" @tap="handleLogin">立即登录</button>  
    </view>  
</template>  

<script>  
    export default {  
        methods: {  
            handleLogin() {  
                const delta = 1 // 返回的页面数  
                uni.navigateBack({  
                    delta: delta,  
                    success: () => {  
                        const pages = getCurrentPages() // 获取当前页面栈数组,第一个元素为首页,最后一个元素为当前页面  
                        let page = pages[Math.max(pages.length - 1 - delta, 0)] // 要返回到的页面,超过页面栈,则为首页  
                        page.onLoad(page.options) // 通过调用页面的 onLoad 里面的处理逻辑实现刷新数据  
                    }  
                })  
            }  
        }  
    }  
</script>  
0 关注 分享

要回复文章请先登录注册

jtshushu

jtshushu (作者)

回复 1***@qq.com :
谢谢 道友
2023-03-25 14:45
1***@qq.com

1***@qq.com

可以用 全局事件 uni.$on和uni.$emit, 或者父子 EventChannel 页面通信
2023-03-04 22:51
jtshushu

jtshushu (作者)

回复 uniapp追随者 :
谢谢
2023-03-04 19:55
5***@qq.com

5***@qq.com

没用呀。。。 page.onLoad is not a function
2022-07-20 15:36
LikeU恋爱交友

LikeU恋爱交友

回复 uniapp追随者 :
对tab页没用啊,差评
2021-06-22 09:26
2***@qq.com

2***@qq.com

要刷新就写onshow,不刷新就写onload
2021-01-14 15:38
今天回复我了吗

今天回复我了吗

h5 中 page.onLoad is not a function
2021-01-14 15:31
jtshushu

jtshushu (作者)

我们在用 uni-app 开发前端时,有时在返回上一页后要刷新上一页的数据,如登录后返回上一页刷新登录状态。我们可以通过 uni.navigateBack 的成功回调函数来实现。具体实现方式如下:

要打开登录页面的主页面中的主要代码如下

<template>
<view>
<button class="cu-btn" @tap="toView('login/login')">登录</button>
</view>
</template>

<script>
export default {
methods: {
toView(page) {
uni.navigateTo({
url: `/pages/${page}`
})
}
},
onLoad(option) {
console.info('调用了 onLoad:' + option)
}
}
</script>
登录页面主要代码如下

<template>
<view>
<button class="cu-btn" @tap="handleLogin">立即登录</button>
</view>
</template>

<script>
export default {
methods: {
handleLogin() {
const delta = 1 // 返回的页面数
uni.navigateBack({
delta: delta,
success: () => {
const pages = getCurrentPages() // 获取当前页面栈数组,第一个元素为首页,最后一个元素为当前页面
let page = pages[Math.max(pages.length - 1 - delta, 0)] // 要返回到的页面,超过页面栈,则为首页
page.onLoad(page.options) // 通过调用页面的 onLoad 里面的处理逻辑实现刷新数据
}
})
}
}
}
</script>
2020-11-21 17:10
jtshushu

jtshushu (作者)

回复 uniapp追随者 :
谢谢
2020-11-21 17:10
uniapp追随者

uniapp追随者

可以参考这篇文章,可以控制是否刷新:[uni-app 返回上一页或返回多页后刷新页面](https://www.lervor.com/archives/177/)
2020-11-20 15:35