uniapp的B页面返回到A页面,A页面刷新引入组件的内容

在uniapp开发中遇到一个问题,当从B页面返回A页面时,A页面内的组件数据未能自动刷新。为解决这个问题,可以在A页面的onShow生命周期中调用子组件的刷新方法。在A页面的模板中引用子组件并获取其引用,在onShow后使用$nextTick确保DOM更新后,调用子组件的overloadData方法来刷新数据。虽然这样能解决问题,但可能会导致初次进入A页面时数据请求被触发两次,需要注意优化请求逻辑。

在这里插入图片描述






uniapp的B页面返回到A页面,A页面刷新引入组件的内容




前言

最近做项目有这么一个需求。从A页面路由到B页面添加数据,添加成功就返回A页面,发现A页面引入的组件没刷新数据。



解决

A页面源码
A页面主要是在onShow生命周期中调用子组件方法,从而达到刷新数据的效果。

<template>
	<view class="main">
		<store ref="store"></store>
	</view>
</template>

<script>
	import store from '../../components/store.vue'

	export default {
   
   
		data(
### UniApp 页面间传递参数的方法 在 UniApp 开发过程中,页面间的参数传递是一个常见的需求。这不仅限于简单的字符串或数值类型的参数,还可以是较为复杂的数据结构如对象。 #### 使用 URL 参数传递简单数据 最基础的方式就是利用URL中的查询参数来进行页面间的数据传输。这种方式适合用于少量且不敏感的信息交换。当目标页面加载时,可通过`$route.query`获取这些参数[^1]。 ```javascript // 跳转并附带参数 uni.navigateTo({ url: &#39;/pages/targetPage?name=John&age=30&#39; }); // 在 targetPage.vue 的 onLoad 方法里读取参数 export default { onLoad(options) { console.log(`姓名:${options.name}, 年龄:${options.age}`); } } ``` #### 利用全局变量存储临时数据 对于一些不需要长期保存但在多个页面间共享的数据,可以考虑创建一个全局的对象作为容器,在需要的时候存入取出相应的值。不过这种方法需要注意清理不再使用的属性以免造成内存泄漏[^2]。 ```javascript Vue.prototype.$globalData = {}; // 定义全局变量 // 设置全局变量 this.$globalData.userInfo = { name: &#39;Alice&#39;, age: 28 }; // 获取全局变量 console.log(this.$globalData.userInfo); ``` #### 发布/订阅模式进行跨页通信 针对更复杂的场景,比如从子组件向父级或其他兄弟页面发送消息的情况,则推荐采用发布-订阅机制。通过 `uni.emit()` 和 `uni.on()` 可以轻松实现这一点。此方法特别适用于处理异步操作后的回调通知,例如支付完成后的状态同步。 ```javascript // 子组件内触发事件 uni.emit(&#39;updateMasq&#39;, {msg: &#39;页面刷新&#39;}); // 父页面监听该事件 uni.on(&#39;updateMasq&#39;, function (data) { console.log(&#39;接收到的消息:&#39;, data.msg); }); ``` 以上三种方式涵盖了大部分情况下UniApp应用内的页面交互需求。开发者可以根据实际情况灵活选用最适合的技术方案来满足项目的特定要求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值