前端 v-if的渲染和语句执行问题

前端 v-if的渲染和语句执行问题

这里的input标签的父级DOM使用v-if控制,

 <input
            type="text"
            ref="test"
            class="cfsUpdateWindowInput"
            :value="stationId"
            readonly="true"
          />





当updateWindows的值改为true时,元素并未立刻渲染,this.$refs.test也获取不到元素,

acquireProperties(updateWindows, index, row) {
      this.updateWindows = updateWindows;
      console.log("1",this.$refs.test);
      };

当进行异步加载,这时可以获取DOM

acquireProperties(updateWindows, index, row) {
      this.updateWindows = updateWindows;

      this.$nextTick(() => {
        console.log("1", this.$refs.test);
      });

经过一番查阅相关资料,一点浅薄之见就是:
js为单线程语言,

this.updateWindows = updateWindows;
console.log("1",this.$refs.test);

这两个命令进入主线程,当执行了第一条语句时,将渲染DOM这个任务加入到Event Table里,也就是任务队列里,执行第二局之后才会执行任务队列里的渲染任务,这时肯定是获取不到DOM的,当加了 n e x t T i c k 之 后 , 将 第 二 条 语 句 的 任 务 也 加 入 到 任 务 队 列 里 , 执 行 完 了 渲 染 任 务 之 后 才 执 行 获 取 D O M 元 素 的 任 务 , 当 然 使 用 v − s h o w 可 以 不 添 加 nextTick之后,将第二条语句的任务也加入到任务队列里,执行完了渲染任务之后才执行获取DOM元素的任务,当然使用v-show可以不添加 nextTickDOM使vshownextTick就能使用。一点浅薄之见,有错误的地方请大佬指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值