Skip to main content

vue this.$forceUpdate() 强制页面刷新问题

问题描述:

在使用Vue框架开发时,在函数中改变了页面中的某个值,在函数中查看是修改成功了,但在页面中没有及时刷新改变后的值;

如往数组中push数据,但页面没有实时渲染,可用 this.$forceUpdate() 强制渲染数据

解决:

运用 this.$forceUpdate() 强制刷新(因为数据层次太多,render函数没有自动更新,需手动强制刷新。)

代码案例

v-for循环值刷新问题:

<Select v-model="carSafeLine.insuranceName" placeholder="请选择" class="mulisel option-h" filterable clearable :disabled="editstatus" @on-change="selectInsurance">
  <Option v-for="item in dataArr" :key="item.code" :value="item.code" :label="item.codename" :disabled="item.disabled"></Option>
</Select>

methods: {
  selectInsurance(){ //刷新车辆保险可选状态
    for(var i=0; i<this.dataArr.length; i++){ 
      var flag = false; //默认没有选中
      var itemI = this.dataArr[i];

      for(var j=0; j<this.form.carInsuranceVOList.length; j++){ //检测选项是否已被选中过
        var itemJ = this.form.carInsuranceVOList[j];
        if(itemI.code == itemJ.insuranceName){
          flag = true;
          break;
        }
      }

      if(flag){
        itemI.disabled = true;
      }else{
        itemI.disabled = false;
      }
    }

    this.$forceUpdate(); //强制刷新,解决页面不会重新渲染的问题
  }
}