首页 > 编程语言 >vue的虚拟dom渲染真实dom的过程中首先会对新老VNode的开始和结束位置进行标记:oldStartIdx、oldEndIdx、newStartIdx、newEndIdx

vue的虚拟dom渲染真实dom的过程中首先会对新老VNode的开始和结束位置进行标记:oldStartIdx、oldEndIdx、newStartIdx、newEndIdx

时间:2023-11-13 19:44:38浏览次数:58  
标签:oldStartIdx vue oldEndIdx dom newEndIdx VNode start 节点

关于Vue中的diff算法说法错误的是( )

A
比较只会在同层级节点进行比较, 不会跨层级比较

B
在diff比较的过程中,循环从两边向中间收拢。

C
vue的虚拟dom渲染真实dom的过程中首先会对新老VNode的开始和结束位置进行标记:oldStartIdx、oldEndIdx、newStartIdx、newEndIdx

D
当老VNode节点的start和新VNode节点的end满足sameVnode时,新VNode节点会被提到start位置

正确答案:D

官方解析:
老 VNode 节点的start和新VNode节点的end满足 sameVnode 时,这说明这次数据更新后oldStartVnode已经跑到了oldEndVnode后面去了,
这时候在patchVnode后,还需要将当前真实dom节点移动到oldEndVnode的后面,同时老VNode节点开始索引加 1,新VNode节点的结束索引减 1。

https://www.jianshu.com/p/cdb4ad82df20

标签:oldStartIdx,vue,oldEndIdx,dom,newEndIdx,VNode,start,节点
From: https://www.cnblogs.com/longmo666/p/17829965.html

相关文章

  • router其实是VueRouter的一个实例,所以它是一个全局对象,包含了所有的子对象和属性
    router其实是VueRouter的一个实例,所以它是一个全局对象,包含了所有的子对象和属性而route是正在跳转的这个路由的局部对象,可以获取这个正在跳转的路由的name,path,params,query等this.$router全局的路由对象,options.routes包括所有的路由路径,this.$router.push()this.$rout......
  • Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmedia
    下列关于Vue的描述错误的是()A当给某个组件修改某个值时,该组件不会立即重新渲染BVue内部使用原生Promise.then、MutationObserver和setImmediate实现异步队列,不会采用setTimeout(fn,0)C$nextTick()返回一个Promise对象D$nextTick()可以配合async/await使用正确答案:B官......
  • Python_Mooc_Stu_23_11_13_String_Random
    目录一、序列 (一)序列的索引 1.索引编号 2.序列元素索引访问3.注意事项 (二)序列的切片 1.切片格式 2.切片使用 3.参数缺省 二、序列的运算和常用处理函数 (一)序列运算 1.序列相加 2.序列相乘 3.序列对象比较 4.成员资格检查 (二)常用处理函数 1.len()......
  • Object.defineProperty(obj,key,val)不可以监听数组变化,需要做特殊处理,所以Vue3.0使用
    关于Vue双向数据绑定说法错误的是()AVue实现双向数据绑定是采用数据劫持和发布者-订阅者模式BObject.defineProperty(obj,key,val)可以监听数组变化,不需要做特殊处理CVue2.0数据劫持是利用ES5的Object.defineProperty(obj,key,val)方法来劫持每个属性的getter和setterD......
  • Vue怎么监听路由参数的变化?
    有两种方法可以监听路由参数的变化,但是只能用在包含<router-view/>的组件内第一种用侦听器监听watch:{ '$route'(to,from){ //在此处监听 },},第二种在路由守卫种监听beforeRouteUpdate(to,from,next){ //这里监听}......
  • vuejs3.0 从入门到精通——Vuex 4.x —— Getter
    Vuex4.x——Getterhttps://vuex.vuejs.org/zh/guide/getters.html 有时候我们需要从store中的state中派生出一些状态,例如对列表进行过滤并计数:computed:{doneTodosCount(){returnthis.$store.state.todos.filter(todo=>todo.done).length}} 如......
  • 无涯教程-Dart - HTML DOM
    文档对象代表该窗口中显示的HTML文档,Document对象具有引用其他对象的各种属性,这些属性允许访问和修改文档内容。文档内容的访问和修改方式称为文档对象模型或DOM,对象按层次结构组织,此层次结构适用于Web文档中对象的组织。Window   -层次结构的顶部,它是对象层次结构的......
  • Vue中如何在有传参的情况下传入默认参数event
    <el-buttontype='primary'@click='handleSearch("kkk",$event)'>我是默认参数</el-button>点击查看代码handleSearch(val,e){ if(e){ /*默认参数*/ }}想要在传递参数的基础上添加默认参数,在vue中要使用$event来代替......
  • [转载]:npm create vite@latest 和 npm init vue@latest 的区别
    1.npmcreatevite@latest:使用Vite构建工具创建项目模板。Vite是一个现代化的前端构建工具,用于快速搭建现代化的Vue、React或者原生JavaScript项目。通过该命令创建的项目模板具有现代化的构建特性,如快速的热模块替换、即时的开发服务器、基于ES模块的构建等,能够提供......
  • vuejs3.0 从入门到精通——Vuex 4.x —— state
    Vuex4.x——statehttps://vuex.vuejs.org/zh/guide/state.html一、单一状态树 Vuex使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源(SSOT)”而存在。这也意味着,每个应用将仅仅包含一个store实例。单一状......