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

前言

uniapp项目中,每个tabbar页面来回点时候,不会触发页面更新。但是有时页面上有数据发生改变需要更新模版时,就得能及时的通知到页面。如果在onshow生命周期里每次都调用异步请求更新数据,有些不合理,况且页面有时不需要更新。

经过思考,我们可以定义一个全局变量,根据全局变量的值来看是否需要更新数据。

开始

细化需求举例:下图是我的聊天记录列表。

当我有新的聊天时,点击"对话"tabbar需要更新此列表。

当无新聊天时,点击此"对话"tabbar不做任何动作。

首先定义全局变量:

根目录/src/utils/globleState.js:

javascript 复制代码
import { ref,reactive } from "vue"

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

在聊天记录页面这样用:

src/pages/chatList/chatList.vue

javascript 复制代码
<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

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

后记

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

相关推荐
三声三视3 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos
小徐_233311 小时前
Open Wot 1.0.5 发布:让 AI 接入 wot-ui,只需要两条命令
前端·uni-app·ai编程
AI多Agent协作实战派15 小时前
AI多Agent协作系统实战(二十二):从6列到12列——任务监控报告的进化之路
java·人工智能·uni-app·bug
小杨小杨、努力变强!17 小时前
VS Code运行HBuilder X中的uni-app项目
vscode·uni-app·uni-app run
码兄科技1 天前
实战:基于Spring Boot + UniApp的地理信息小程序开发
spring boot·后端·uni-app
布兰妮甜2 天前
从 0 搭建企业级 Vue3/Vite 脚手架(规范、eslint、husky、打包、环境变量全流程)
typescript·vue3·vite·脚手架·前端工程化
2501_916007472 天前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
gis开发之家2 天前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
2501_916007473 天前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
小徐_23333 天前
AI 写 wot-ui 总在猜 API?我们把 Skills、MCP 和 CLI 都配好了
前端·uni-app·ai编程