vue2:v-if和v-show的区别以及造成的影响

          <div class="form-box-4" v-show="checkedList.includes('0505')">
            <span class="form-box-4-label"
              ><span style="color: red">*</span>三失一偏类型:
            </span>
            <ta-form-item
              field-decorator-id="threelostoneType"
              :span="24"
              :field-decorator-options="{
                rules: [{ required: true, message: '请选择三失一偏类型' }],
              }"
              :disabled="isTypeDisabled"
            >
              <ta-checkbox-group
                collection-type="ZAFK_THREELOSTONE_TYPE"
                :value="threelostoneTypeList"
                :disabled="isTypeDisabled"
              />
            </ta-form-item>
          </div>

看上面这一段代码,一个复选框,用div包裹,添加了一个v-if条件。就因为这个v-if,导致了接口返回的数据不能回显。
v-if和v-show都能控制元素是否显示,然而原理却完全不同。
v-if:如果为false就销毁元素,原来的那个dom对象就不存在了;如果为true,就创建一个新的dom对象。这导致了我在initForm中回显了数据,但是因为元素经历了一个销毁又被创建的过程,导致会显得数据消失了。
v-show:并不会创建或者销毁元素,而只是在页面上隐藏,无法看到,dom对象还是在的。但是也无法触发生命周期和钩子,因为对象一直都在。

posted @ 2025-10-22 20:07  扶她少女卡尔玛  阅读(5)  评论(0)    收藏  举报