VUE 视图不刷新解决方法

折腾VUE总会遇到这种问题,一直以来都是想用各种方法凑合,网上一般也是方法各异,像this.$updateForce强制刷新视图(基本无效),还有用vue的set方法、js的splice方法设置数据,但这并不能解决所有问题,也有人说用key,但一直没试过,直到今天尝试着用key来解决,结果发现还是很OK的。

具体方法就是在每次更新数据后,刷新一下key,比如我想刷新表格的其中几列,那么我可以这样写:

<el-table-column label="列1" :key="'col1'+timestamp"></el-table-column>
<el-table-column label="列2" :key="'col2'+timestamp"></el-table-column>
<el-table-column label="列3" :key="'col3'+timestamp"></el-table-column>

timestamp 是时间戳,可用以下代码获取。

this.timestamp = new Date().valueOf()

每次刷新数据后,重新给timestamp赋值,然后视图就会跟着刷新了。

当然,key并不局限于表格,其他地方也一样可以用,比如拖拽操作中,发现拖拽后数据更新了,但视图还是原来的老样子,也可以使用这个key,每个被拖拽的元素都加一个key,每次拖拽完给timestamp重新赋值就OK了。

同理,如果想整个刷新表格,则给<el-table :key="'table'+timestamp">......</el-table>即可,而el-table-column就不需要再加key了。

但是要注意一点,刷新key可能会导致原有的绑定事件失效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值