vue 中DOM渲染的问题

vue 中DOM渲染的问题,第1张

如果我们在有输入内容的情况下,切换了类型,我们会发现文字依然显示之前的输入的内容。

但是按道理讲,我们应该切换到另外一个input元素中了。

在另一个input元素中,我们并没有输入内容。

为什么会出现这个问题呢?

这是因为Vue在进行DOM渲染时,出于性能考虑,会尽可能的复用已经存在的元素,而不是重新创建新的元素。

在上面的案例中,Vue内部会发现原来的input元素不再使用,直接作为else中的input来使用了。

1、判断是否有render函数,如果有,直接将render函数返回结果作为虚拟节点树;如果没有,看有没有template配置

2、如果有template配置,将template作为模板 编译为render函数;如果没有则看el配置的outerHTML作为模板

render函数:

a、render 函数的参数(createElement)

createElement 是 render 函数 的参数,它本身也是个函数,并且有三个参数。

b、createElement 函数的参数(三个)

(1)一个 HTML 标签字符串,组件选项对象,或者解析上述任何一种的一个 async 异步函数。类型:{String | Object | Function}。必需。

(2)一个包含模板相关属性的数据对象你可以在 template 中使用这些特性。类型:{Object}。可选。

(3)子虚拟节点 (VNodes),由 createElement() 构建而成,也可以使用字符串来生成“文本虚拟节点”。类型:{String | Array}。可选。

例子:

var vm= new Vue({

el:"#app",

data:{

author:“web小王子”

}

render(h){

h("h1",[h("h1",

{

      props: {

        someProp: 'foobar'      }

    },

`第1个vue应用,作者${thisauthor}`)])

}

})

先设置元素的ref,如 <div style="height: 500px" ref="tablewrap" ></div>,要获取该元素高度,必须先给该元素设置css高度

再用  windowgetComputedStyle(this$refstablewrap)height  获取

注意:用this$refs获取dom元素高度,必须在mounted钩子中,如下:

mounted() {

        consolelog(windowgetComputedStyle(this$refstablewrap)height)

}

给element表格设置动态高度,就可以用上述方法

在data中定义变量

最后,在mounted钩子中设置表格的高度

以上就是关于vue 中DOM渲染的问题全部的内容,包括:vue 中DOM渲染的问题、vue渲染虚拟dom树原理、vue 中用this.$refs获取dom元素高度,给element表格设置动态高度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9745435.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存