赞
踩
在全局 App.vue 中定义一个定时刷新消息的方法,然后通过uni.$on()监听对应点击的 tabBar页面 所传参数,进行判断执行对应的操作。当你在 tabBar页面 时,会通过uni.$emit()传参(获取并刷新最新消息),当你切换到 非tabBar页面 时,onHide 取消监听(停止获取消息)。
你可能会说:那怎么办呢?
我:耐心的看下去哦,为了你那不报错的代码。
代码如下:
- created: function() {
- uni.$on('News', res => {
- console.log(res.msg)
- if (res.msg == 'monitor') {
- // 进入tabBer页面时执行定时器
- this.startTimer()
- } else {
- // 离开tabBer页面清除定时器
- clearInterval(this.timer)
- }
- })
- },
代码如下:
- methods: {
- startTimer() {
- this.timer = setInterval(() => {
- let num = uni.getStorageSync("numberOfMessage"); // 获取本地缓存数据
- if (num != num) { // 有新的消息时刷新消息
- uni.setTabBarBadge({
- index: 1,
- text: String(num)
- })
- } else if (num == num && num > 0) { // 消息不变并且消息数大于0
- // 设置角标
- uni.setTabBarBadge({
- index: 1,
- text: String(num)
- })
- } else { // 无消息
- // 移除角标
- uni.removeTabBarBadge({
- index: 1
- })
- clearInterval(this.timer)
- }
- }, 1000); // 1000毫秒即1秒
- },
- stopTimer() {
- clearInterval(this.timer); // 关闭定时器
- }
- }
-
- onShow() {
- console.log("页面刷新")
- uni.$emit('News', {
- msg: 'monitor'
- })
- },
- onLoad() {},
- onHide() {
- console.log('离开当前页面')
- // 正确示例:提供正确的回调函数参数
- uni.$emit('News', {
- msg: 'departure'
- })
- },
NumOfMessage: 6, //消息数
uni.setStorageSync('numberOfMessage', this.NumOfMessage)
大家看完有什么觉得可以优化的地方,希望提出来分享一下哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。