当前位置: 首页 > news >正文

uniapp vue3项目定义全局变量,切换底部babar时根据条件刷新页面

前言

uniapp项目中,每个tabbar页面来回点时候,不会触发页面更新。但是有时页面上有数据发生改变需要更新模版时,就得能及时的通知到页面。如果在onshow生命周期里每次都调用异步请求更新数据,有些不合理,况且页面有时不需要更新。
经过思考,我们可以定义一个全局变量,根据全局变量的值来看是否需要更新数据。

开始

细化需求举例:下图是我的聊天记录列表。
当我有新的聊天时,点击“对话”tabbar需要更新此列表。
当无新聊天时,点击此“对话”tabbar不做任何动作。
在这里插入图片描述

首先定义全局变量:
根目录/src/utils/globleState.js:

import { ref,reactive } from "vue"

let gloableState = reactive({
	chatListIsRefresh:false,  // 是否需要刷新聊天记录列表
	collectListIsRefresh:false
})
export function useGloableState(){
	return gloableState
}

在聊天记录页面这样用:
src/pages/chatList/chatList.vue

<script setup>
	import {useGloableState} from '@/utils/gloableState.js'
	let gloableState = useGloableState()
	getChatList(){
		let res = await ... // 异步请求取最新的聊天记录列表
		gloableState.chatListIsRefresh = false; // 更新全局变量,表示聊天列表已是最新
	}
	onShow(() => {
		if(gloableState.chatListIsRefresh){ // 如果检测到需要更新聊天记录列表才重新请求数据
			getChatList() // 重新请求数据
		}
	});
</script>

在聊天页面,如果有新聊天,去更新全局变量为true,表示有新聊天,需要刷新聊天记录列表:
src/pages/chat/chat.vue

<script setup>
	import {useGloableState} from '@/utils/gloableState.js'
	let gloableState = useGloableState()
	chat(){
		... // 此处为发送聊天逻辑
		gloableState.chatListIsRefresh = true; // 更新全局变量,表示聊天列表需要更新
	}
</script>

后记

在此记录问题解决方法,也给需要的朋友们一个思路。有问题可以留言我们一起讨论。

相关文章:

  • Spring中Bean的自动装配
  • 电脑型号与尺寸
  • 大数据学习拓展——Minio安装与使用
  • Unity Shader - UI Sprite Shader之简单抠图效果
  • ollama docker设置模型常驻显存
  • 流量分析实践
  • 【Python 算法零基础 1.线性枚举】
  • 使用htool工具导出和导入Excel表
  • springboot学习(自定义starter)
  • GO语言的GC(垃圾回收)原理
  • 探索可变参数提升不变学习以增强分布外泛化能力
  • Android ARouter的详细使用指南
  • 京东云DeepSeek-R1模型一键部署教程,基于智算GCS【成本2元】
  • Ansible 如何使用 Playbook 批量部署应用?
  • Unity WebGL项目访问时自动全屏
  • vue 加密解密
  • 基于PMU的14节点、30节点电力系统状态估计MATLAB程序
  • AndroidStudio下载安装,环境部署以及常见问题解决教程(亲测)
  • 游戏立项时期随笔记录(1)
  • MySql数据库(表数据的增、删、改操作)8
  • 35款移动应用存在违法违规收集使用个人信息情况,涉及智谱清言、Kimi等
  • 凤阳文旅局长回应鼓楼瓦片脱落事件:楼宇是否属于文物?施工经费用在何处?
  • 媒体:演员黄杨钿甜耳环事件仍有三大疑问待解
  • 复旦兼职教授高纪凡首秀,勉励学子“看三十年才能看见使命”
  • 瑞幸首度牵手成都国际非遗节,用一杯饮品将非遗之美推向全国
  • 日月谭天 | 赖清德倒行逆施“三宗罪”,让岛内民众怒不可遏