寫一些vue.js的template太繁瑣,利用render,可以使用js來生成模板,更加靈活和簡便。
官網也說了。在深入渲染函式之前推薦閱讀例項屬性 api因為寫很多render的函式裡面需要呼叫其實例屬性的api.
實現效果:
目標:點選1的時候使用,下方內容使用h1標題,點選hi 的時候,使用hi的標題.
其父元件很好寫:23
456內容大小:
}balabala...balabala...balabala...balabala...balabala...
balabala...balabala...balabala...balabala...balabala...
balabala...balabala...balabala...balabala...balabala...
balabala...balabala...balabala...balabala...balabala...
balabala...balabala...balabala...balabala...balabala...
balabala...balabala...balabala...balabala...balabala...
子元件不使用render的時候,是這樣: 很複雜,多個slot。
使用render後,是這樣:只需要乙個函式就行。可以看到這個檔案裡面沒有template,使用render生成的template。
render方法會傳入乙個createelement函式
這個函式呢。其返回乙個"虛擬dom",其引數有三個:createelement這個方法在vue2的習慣性使用中經常用h來命名tag 型別:string/object/function 說明:乙個html標籤,元件型別,或乙個函式
data 型別:object 說明:乙個對應屬性的資料物件,用於向建立的節點物件設定屬性值
children 型別:string/array 說明:子節點
render: function (createelement)
作用呢?
可以參看第一種寫法:
new vue(
})第二種寫法:
new vue()
再補充一點的是:在業務中,生產效率是第一位,所以絕大部分業務**都應當用 template 來完成。 你不用在意效能問題 , 如果使用了 webpack 做編譯 , template 都會被預編譯為 render 函式。####
vue render 函式理解
感覺render是為補救template缺點而誕生的 vue通過建立乙個虛擬dom對真實dom發生的變化保持追蹤。return createelement h1 hello world createelement 到底會返回什麼呢?其實不是乙個實際的 dom 元素。它更準確的名字是createnod...
Vue render 函式中使用this
1.在render中直接使用this,on裡面click函式不是箭頭函式 使用this需要在父級將this儲存起來才能使用 render h,params params let this this return h div style on this.previewurl row.picture t...
vue render函式 函式元件化
之前建立的錨點標題元件是比較簡單,沒有管理或者監聽任何傳遞給他的狀態,也沒有生命週期方法,它只是乙個接受引數的函式 在這個例子中,我們標記元件為functional,這意味它是無狀態 沒有data 無例項 沒有this上下文 乙個函式化元件就像這樣 vue.component my componen...