优秀的编程知识分享平台

网站首页 > 技术文章 正文

uniapp跳转tabbar页面数据不刷新(uniapp页面跳转方式)

nanyue 2024-11-03 14:03:42 技术文章 4 ℃

场景:假设跳转的页面是‘../../myselfs/myselfs’

uni.switchTab({
	url:'../../myselfs/myselfs',
})

如果需要在../../myselfs/myselfs页面中需要触发加载事件,比如通过接口获取登录用户信息

onLoad() {
	this.isLogin()//通过请求接口获取数据
},

此时跳转页面数据是不加载的,因为tabbar仅当页面真正刷新的时候才会执行除(onShow()和onHide())之外的生命周期函数,所以方法失效。

onShow() {
	this.isLogin()//可以正常执行,但每次加载都会触发
},

最优做法:在switchTab里添加加载成功事件,拿到加载后的page对象,执行需要跳转页面的方法

uni.switchTab({
	url:'../../myselfs/myselfs',
    success() {
        var page = getCurrentPages().pop();//拿到跳转后页面的page对象
        console.log(page)
        //#ifndef H5
        page.onLoad() //条件编译除H5平台下触发函数(H5下onLoad有效)
        // #endif
        //#ifdef H5
        page.isLogin() //onLoad H5下偶尔失效(直接触发方法)
        //#endif
    }
})

附:console.log(page)部分


Popup 弹出层(onLoad使用时)出错TypeError: Cannot read property 'open' of undefined

因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

所以this.$refs.popup.open()会报错

最近发表
标签列表