Vue-render函式的三個引數

李不遠發表於2018-11-20

render函式的第一個引數

  1. 第一個引數必選.
  2. 可選型別
    • string:html標籤
    • object:一個含有資料選項的物件
    • function:返回一個含有資料選項的物件
    Vue.component('child', {
        props: ['level'],
        render: function (createElement) {
            //string:html標籤
            return createElement('h1')
            //object:一個含有資料選項的物件
            return createElement({
                template: '<div>談笑風生</div>'
            })
            //function:返回一個含有資料選項的物件
            var domFun = function () {
                return {
                    template: `<div>談笑風生</div>`
                }
            }
            return createElement(domFun())
        }
    })
複製程式碼

render函式的第二個引數

  1. 第二個引數可選
  2. 第二個引數是資料物件。只能是object
    • class
    • style
    • attrs
    • domProps
    Vue.component('child', {
        props: ['level'],
        render: function (createElement) {
            return createElement('div', {
                class: {
                    foo: true,
                    baz: false
                },
                style: {
                    height: '34px',
                    background: 'orange',
                    fontSize: '16px'
                },
                //正常的html特性(除了class和style)
                attrs: {
                    id: 'foo',
                    title: 'baz'
                },
                //用來寫原生的DOM屬性
                domProps: {
                    innerHTML: '<span style="color:blue;font-size:24px">江心比心</span>'
                }
            })
        }
    })
複製程式碼

render函式的第三個引數-代表子節點

  1. 第三個引數可選
  2. String|Array
    Vue.component('child', {
        props: ['level'],
        render: function (createElement) {
            return createElement('div', [
                createElement('h1', '我是大標題'),
                createElement('h2', '我是二標題'),
                createElement('h3', '我是三標題')
            ])
        }
    })
複製程式碼

相關文章