关于使用keep-alive让DOM未重新渲染所导致的BUG解决方案

项目干货

1.参见之前的博客,项目中为了使操作友好,使用了keep-alive让后退、前进等切换路由操作,不会让某个页面的状态刷新,即保留切换路由前的状态以及数据。
在这里插入图片描述

比如我想在切换路由之后,上面下拉选项的值仍保留,那么就可以用到keep-alive,简单快捷。可以参考我之前的博客。

2.但是使用了keep-alive之后,页面在切换路由后不会触发DOM重新渲染,这就会带来一些问题。比如我这次遇到的通过伪类添加的小红点,在路由切换之后,回来直接错位。又比如在IE浏览器下,HUI的表格会丧失滚动条的问题。
在这里插入图片描述
3.这个问题比较罕见,直接搜是搜不到解决方案的。只有自己判断出来是DOM未重新渲染而导致的问题之后,才能对症下药。
解决方案如下:
vue要重新渲染一个组件怎么办?

<modal id='xxx' v-if="modalShow">...</modal>
<button @click="rerender"></button>
this.showSwipe = false;
this.$nextTick(function () {
   this.showSwipe = true;
});

使用$nextTick使在DOM加载完成后,触发重新渲染,即解决了以上问题。使用v-if来触发渲染,也是一种很巧妙的办法

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值