• Vue_render函数



    首先看一下在 vue2 中 创建vdom并将其 挂载到dom元素上 的语法

    import Vue from 'vue'
    import App from './App.vue' //组件
    
    new Vue({
      render: h => h(App),
    }).$mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 在通过 new关键字 创建vue实例化对象时会 自动调用render 函数;
      • 得到vdom
      • 返回到实例化对象的beforeMount生命周期中;
    • $mount函数将vdom挂载到dom元素上;
    • 进行渲染

    render函数

    语法
    render( createElement ){
      return createElement(...)
    }
    
    • 1
    • 2
    • 3
    • 参数:render函数会将 createElement函数 作为参数传入 ;
    • 返回值: 返回值为createElemenet函数的调用 即vdom
    作用

    render函数的作用是将 createElemet 函数创建的vdom返回到Vue实例化对象的beforeMount生命周期函数中;然后通过挂载点进行挂载然后将vdom渲染在界面上(真实dom)。

    createElement函数

    createElement函数是用于创建vdom的,其内有三个参数

    • 参数1(必填):需要渲染的html标签;
      • 类型(String | Object | function)
    • 参数2(选填):html标签的各种属性;
      • 类型(Object)
        • class : 类名(String)
        • style:样式(Object)
        • attrs: 属性(Object)
        • domProps:设置标签内容等
    • 参数3(选填):子元素
    示例-参数1为字符串(html标签)

    若是createElement的第一个参数为html标签的字符串-> 创建一个对应的html标签的vdom并将这个标签渲染到挂载点上(createElement创建$mount函数挂载渲染);

    <script>
    export default {
      render( createElement ){
        return createElement('div',{domProps:{innerHTML:'html页面'}})
      }
    }
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 在这里插入图片描述
    • 在这里插入图片描述
    • 原理:进入该组件会 自动调用render函数 得到vdom将其传入beforeMount生命周期函数中,让其将vdom渲染在界面上。

    上述示例是创建了一个div标签,若是想给标签内部添加子元素->使用第三个参数为其添加子元素

    <script>
    export default {
      data(){
        return{
          value:[111,222]
        }
      },
      render( createElement ){
        return createElement('ul',{domProps:''},this.value.map(item => createElement('li',{domProps:{innerHTML:item},style:{color:'#f00'}})))
      }
    }
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 在这里插入图片描述
    • 在有子元素时,要将父元素的innerHTML/innerText去掉,否则会覆盖标签间的全部内容,导致子元素不能正常显示;
    示例2-参数1为组件

    若是createElement的第一个参数为组件 -> 创建该组件的vdom渲染到挂载点上(createElement创建$mount函数挂载渲染);

    • 子组件

       <template>
         <ul>
           <li>111</li>
           <li>222</li>
         </ul>
       </template>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 父组件

      • <script>
        import hello from './hello.vue'
        export default {
          data(){
            return{
              value:[111,222]
            }
          },
          render( createElement ){
            return createElement(hello)
          }
        }
        </script>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13

    el与$mount挂载

    使用el或$mount进行挂载

  • 相关阅读:
    SEO优化的许多好处是与流量有直接关系
    jQuery基础
    加载用户数据至用户维度表
    Tomcat部署项目的两种方式
    Allegro如何输出STP文件操作指导
    Docker部署Springboot项目
    基于寄生捕食算法优化概率神经网络PNN的分类预测 - 附代码
    软件开发程序员的“九阳神功”——设计模式
    py0_二十一天计划书
    专注于绘画,不受限制!尝试Growly Draw for Mac的快速绘画应用
  • 原文地址:https://blog.csdn.net/qq_43260366/article/details/126908076