vue 强制组件重新渲染(重置)

4 篇文章 0 订阅
1 篇文章 0 订阅

数据通过异步操作后,对之前刚加载的数据进行变更后,发现数据不能生效,此时可以使用强制刷新,方案有很多,在此举例三种方案

方案一 : key值法(官方推荐,具体移步至官网) 

原理:key值变化之后,会自动重新渲染组件

<template>
   <my-index :key="key"/>
</template>
 
<script>
   export default{
       data(){
          return {
                key:0
            }
       },
       watch:{
             key(){ 
                ++this.key
            }
       }
}
</script>

方案二:v-if 

原理:使用watch监听数据的变化,发生改变后,先销毁当前组件,再重新渲染

<template>
   
   <my-index v-if="reFresh"/>
</template>
 
<script>
   export default{
       data(){
          return {
                reFresh:true,
                changeValue:''
            }
       },
       watch:{
             changeValue(){
 
                  this.reFresh= false
                  this.$nextTick(()=>{
                    
                    this.reFresh = true
                })
            }
       }
}
</script>

方案三:v-show 

v-show 是一开始就渲染的所有组件 , 之后只是样式的显示与隐藏

和v-if 比较的差别是 v-if 切换一次就需要重新渲染一次组件  

<template>
   
   <my-index v-show="isShow"/>
</template>
 
<script>
   export default{
       data(){
          return {
                isShow:true,
                changeValue:''
            }
       },
       watch:{
             changeValue(){
 
                  this.isShow= false
                  this.$nextTick(()=>{
                    
                    this.isShow = true
                })
            }
       }
}
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值