vue中使用[provide/inject],实现页面强制刷新(并非闪一下再刷新)

代码

父组件

provide 直接放在export 层级里面

  provide() {
    return {
      reload: this.reload
    }
  },

methods中添加reload方法,

data中定义flag,如果需要此组件默认显示则为true,否则为false,
在引入的子组件上添加v-if=“flag”

    reload(){
      this.flag = false;
      this.$nextTick(function () {
        this.flag = true
      })
    },

子组件代码

export default 层级中添加
inject: [‘reload’],
在dom最顶一层的div上(非template)添加flag判断,如:v-if=“flag”
data中定义: flag: true

原理

主要是通过一个属性的相反值进行组件加载
通过inject和provide使子组件不仅可以访问父组件,还可以访问到祖先级组件

Vue.js中,实现组件状态刷新而不重新加载整个页面的方法有多种,其中推荐使用`provide / inject`组合。这种方法允许数据在组件树中传递,但不会引起不必要的重载,从而保持用户体验。具体操作如下: 参考资源链接:[Vue 实现增删改查后页面自动刷新](https://wenku.csdn.net/doc/51wj2ddr6s?spm=1055.2569.3001.10343) 首先,在祖先组件(通常是应用的根组件App.vue)中定义`provide`函数,提供一个包含`reload`方法的对象: ```javascript // App.vue export default { provide() { return { reload: this.reload }; }, methods: { reload() { // 实现页面或组件状态刷新的逻辑 } } } ``` 然后,在任何需要接收数据并刷新的子组件中,使用`inject`选项来注入`reload`方法: ```javascript // 子组件 export default { inject: ['reload'], // ...其他选项 methods: { updateData() { // 数据更新逻辑 this.$emit('update-data'); }, handleDataUpdateSuccess() { this.reload(); } } } ``` 在这个例子中,当子组件需要刷新其状态时,可以通过调用注入的`reload`方法来请求祖先组件执行刷新逻辑。这样,你就可以避免重新加载整个页面,同时确保相关组件能够根据最新的数据更新视图。 其他方法包括直接调用接口重新获取数据,使用`$forceUpdate()`强制组件重新渲染,或者使用`$nextTick()`在下一次DOM更新后执行数据依赖的操作。每种方法都有其适用场景,但`provide / inject`提供了一种更加优雅且不侵入的方式来控制组件状态的更新。 对于希望深入理解不同刷新策略及其使用场景的读者,推荐阅读《Vue 实现增删改查后页面自动刷新》一文。文章详细探讨了在Vue.js应用中执行CRUD操作后,页面如何实现烁的自动刷新,其中包含了关于`provide / inject`以及其他方法的深入讨论和实践案例。 参考资源链接:[Vue 实现增删改查后页面自动刷新](https://wenku.csdn.net/doc/51wj2ddr6s?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值