vue3动态赋值dom后无法操作最新dom解决办法

操作环境

Vue3
Element Plus

问题重现

<template>
  <el-tree
    ref="treeRef"
    :data="data"
  />
  </template>
  <script lang="ts" setup>
    // 引入必要组件
    getTreeData()
    .then((res) => {
    data.value = res.data
    treeRef.value.setChecked();
    })
  </script>

本想在给tree组件赋值的时候,一并设置选中值,但是并没有生效,于是测试了下,发现treeRef.value.data为空,也就是此时的tree组件仍为赋值之前的组件,是不是真的如此,可以使用onUpdated测试下,在onUpdated下可以获取到data值,但是只能在onUpdated中进行后续操作了吗?其实不然,还有更简单的办法

解决办法

<template>
  <el-tree
    ref="treeRef"
    :data="data"
  />
  </template>
  <script lang="ts" setup>
    // 引入必要组件
    getTreeData()
    .then((res) => {
    data.value = res.data
    }).finally(() => {
    treeRef.value.setChecked();
    })
  </script>

虽然then中无法进行操作,那么在finally中呢,then完成操作之后就会进入finally中,此时dom已经被更新,finally中获取的就是更新后的dom,此时可以进行下一步操作。

猜你喜欢

转载自blog.csdn.net/a7442358/article/details/129324841