【Vue】采用provide/inject方式刷新当前页面

本文介绍在Vue项目中,如何利用provide/inject组合实现在不刷新页面的情况下更新数据,尤其适用于列表操作后的数据同步,保持了分页和其他查询条件的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.场景

在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。

2.遇到的问题

1. 用vue-router重新路由到当前页面,页面是不进行刷新的

2.采用window.reload(),或者router.go(0)刷新时,整个浏览器进行了重新加载,闪烁,体验不好

3.解决方法

provide / inject 组合

作用:允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

App.vue:

声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载

 

tableList.vue:

在页面注入App.vue组件提供(provide)的 reload 依赖,在逻辑完成之后(删除或添加...),直接this.reload()调用,即可刷新当前页面。

4.provide / inject 用法

provide:选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的属性。

inject:一个字符串数组,或一个对象,对象的 key 是本地的绑定名

提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。

==========================================

深入理解数据驱动

以上算是开发过程中的一个坑,用了一段时间,今天再读代码的时候,感觉被坑的很严重。

1. 获取列表方法

2.重新获取数据

3.这样再次调用获取数据,即可同步实现页面数据更新(不会重新刷新页面),同时保证有分页时,能够停留在当前页(刷新前如果是第二页,刷新后依然在第二页),

即其他查询条件保持不变,体验效果好

### 如何在 UniApp Vue3 中实现刷新当前页面 #### 使用 `provide/inject` 组合方式 为了实现在 UniApp Vue3 中刷新当前页面而不导致页面短暂变空白,可以采用 `provide/inject` 的组合方式。这种方式通过在全局组件 `App.vue` 定义一个 `reload` 方法,在需要刷新的子组件中注入此方法来触发刷新操作[^2]。 ```javascript // App.vue export default { provide() { return { reload: this.reload }; }, data() { return { isReload: false, } }, methods: { reload() { this.isReload = !this.isReload; } } } ``` ```html <!-- 子组件 --> <template> <view v-if="isReload"> <!-- 页面内容 --> </view> </template> <script> import { inject } from 'vue'; export default { setup() { const reload = inject('reload'); function handleRefresh() { reload(); } return { handleRefresh }; } }; </script> ``` 这种方案不仅能够有效刷新页面数据,还保持了较好的用户体验,避免了传统刷新带来的白屏现象。 #### 配置下拉刷新功能 另一种常见的刷新机制是在页面配置文件 `pages.json` 开启下拉刷新支持,并配合 `onPullDownRefresh` 事件处理函数完成页面刷新逻辑[^3]。 ```json { "path": "pages/classlist/classlist", "style": { "enablePullDownRefresh": true } } ``` ```javascript export default { onPullDownRefresh() { // 执行刷新逻辑 setTimeout(() => { uni.stopPullDownRefresh(); // 结束动画 }, 1000); } } ``` 上述两种方法均适用于不同场景下的页面刷新需求,开发者可以根据实际项目情况选择合适的方式实施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值