$nextTick与dom渲染时机的先后问题
来源:3-10 vue组件更新之后如何获取最新DOM
慕沐0087893
2021-03-16
$nextTick是微任务,微任务的执行是在DOM渲染前的;
视频中说经过验证$nextTick是在DOM渲染后触发的;
没搞明白呢
写回答
1回答
-
双越
2021-03-17
<ul id="ul1"> <li>100</li> <li>200</li> <li>300</li> </ul> <script> const ul1 = document.getElementById('ul1') alert(ul1.children.length) // 3 const newLi = document.createElement('li') newLi.innerHTML = '400' ul1.appendChild(newLi) Promise.resolve().then(() => { alert(ul1.children.length) // 4 }) </script>
先看看上面的示例。
微任务的 callback 中也可以拿到最新的 DOM 结果,即渲染之后的结果。这一点微任务和宏任务是一样的。
但是,注意,此时页面上还没有渲染出 <li>400</li> ,仅仅是通过 js 代码能拿到而已。这一点和宏任务不一样。
关于异步的内容,推荐你了解一下我做的 https://coding.imooc.com/class/400.html 《前端一面》这门课程。看看第 8 章的目录,异步进阶。
222021-08-11
相似问题