vue刷新时不让页面出现空白的方式 provide/inject

本文介绍了一种在Vue中通过控制router的显示与隐藏来实现组件刷新的方法。具体操作是在App.vue中使用v-if指令控制router-view的显示状态,结合$nextTick实现页面的重新加载。同时,通过注入reload方法到子组件中,使其能够调用刷新功能。

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

(1)控制router的显示与隐藏

// App.vue

<template>
  <div id="app">
    <router-view     v-if="routerAlive"/>
  </div>
</template>

<script>
  export default {
    name: 'app',
    provide(){
      return{
        reload:this.reload
      }
    },
    data() {
      return {
    	  routerAlive:true,
      }
    },
    methods: {
     reload(){
			this.routerAlive=false;
			this.$nextTick(function(){
				this.routerAlive=true;
			})
		}

    },

  }
</script>

(2)在要刷新的组件引入inject

	export default {
		inject: ['reload'],
		
		methods:{
			reloadBtn(){            //刷新事件
				this.reload();         //调用reload方法
			}
		}
	}
### 如何在 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、付费专栏及课程。

余额充值