美文网首页
Vue中的render函数

Vue中的render函数

作者: ZH彪 | 来源:发表于2020-02-27 23:16 被阅读0次

转载:https://blog.csdn.net/qq122516902/article/details/87984148

目录

render函数

先看看main.js文件中的内容:

import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  // 2.注册组件
  components: { App },
  // 1. 定义组件的模板<App><App/>
  template: '<App/>'
})

从文件中我们可以看到,首先把Vue实例绑定到#app元素上面,这个#app元素是index.html中的元素,不是App.vue中的元素。再引入 App.vue这个文件,然后在Vue实例中注册这个组件,在把App中的html渲染到Vue实例上。

现在通过render函数改写这个:

import Vue from 'vue'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#myApp',
  render: h => (<div>123</div>)
})

render: h => (<div>123</div>)这里的作用就是括号里面的html。
再看另外一个例子:

Vue.component('MyApp', {
  render: function (createElement) {
    return createElement(
      'h1',   // 标签名称
      '123' // 子元素数组
    )
  },
  props: {
    level: {
      type: Number,
      required: true
    }
  }
})

/* eslint-disable no-new */
new Vue({
  el: '#myApp',
  template: '<MyApp/>'
})

首先通过Vue.component注册一个组件,这个组件通过template: '<MyApp/>'渲染到Vue根实例。render函数用来生成组件中的html内容:

Vue.component('MyApp', {
  render: function (createElement) {
    return createElement(
      'h1',   // 标签名称
      '123' // 子元素数组
    )
  },
  props: {
    level: {
      type: Number,
      required: true
    }
  }
})

再次修改main.js:

import Vue from 'vue'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#myApp',
  render: function (createElement) {
    return createElement(
      'h1',   // 标签名称
      '123' // 内容
    )
  }
})

直接通过render函数渲染。

  • 使用h代替createElement


    在这里插入图片描述

    通过代码的方式去写html标签是很繁琐的,但是 通过上面这种形式可以直接写html标签了:

import Vue from 'vue'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#myApp',
  render: h => (<div>
    <h1>123</h1>
  </div>)
})

实例:mai.js

import Vue from 'vue'
// import Vue from 'vue/dist/vue.esm.js'
import App from './App'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  // 下面三种方式都是一样的 只是写法不一样

  // 方法1 vuecli2.x的写法  如果是vuecli3.x搭建的2.x的版本
  // 则需这样引入Vue :  import Vue from 'vue/dist/vue.esm.js'   见:https://blog.csdn.net/wxl1555/article/details/83187647
  // components: { App },
  // template: '<App/>'  // <App/>模板最后插入在 #app中

  // 方法2
  // render: h => h(App)

  // 方法3
  // render (h) {
  //   return h(App)
  // }
  // 方法 2和3是该方法发缩写   使用h代替createElement
  render (createElement) {
    return createElement(App)
  }
})

相关文章

网友评论

      本文标题:Vue中的render函数

      本文链接:https://www.haomeiwen.com/subject/yqfqhhtx.html