vue通過 template 來建立你的 html。但是,在特殊情況下,這種寫死的模式無法滿足需求,必須需要js的程式設計能力。此時,需要用render來建立html。
render方法的實質就是生成template模板;
通過呼叫乙個方法來生成,而這個方法是通過render方法的引數傳遞給他的;
通過這三個引數,可以生成乙個完整的模板
官網例項
//未使用render函式
vue.component('anchored-heading',
}})//使用render函式
vue.component('anchored-heading', ,
props:
}})
區別:
createelement方法,通過render函式的引數傳遞進來,有三個引數
什麼情況下適合使用render函式
在一次封裝一套通用按鈕元件的工作中,按鈕有四個樣式(success、error、warning、default)。首先,你可能會想到如下實現
}}}
這樣寫在按鈕樣式少的時候完全沒有問題,但是試想,如果需要的按鈕樣式有十多個。那麼template寫死的方式就顯得很無力了。遇上類似這樣的情況,使用render函式可以說最優選擇了。
首先render函式生成的內容相當於template的內容,故使用render函式時,在.vue檔案中需要先把template標籤去掉。只保留邏輯層。
export default ,
text:
}, computed:
} },
render(h) ,
domprops: ,
on:
});}, methods:
}};
是的,要記住每個引數的型別同用法,按序傳參實在是太麻煩了。那麼其實可以用jsx來優化這個繁瑣的過程。
render()
);},
Vue提高16 render函式
在某些場景下你可能需要render渲染函式帶來的完全程式設計能力來解決不太容易解決的問題,特別是要動態選擇生成標籤和元件型別的場景。根據props來生成標籤的場景 其中level是data中的變數,可以看到這裡有大量重複 如果邏輯複雜點,加上一些繫結和判斷就更複雜了,這裡可以利用render函式來對...
Vue之Render函式高階篇
一 v if v else 利用if else代替 二 v for 必須用map 三 v model 父子元件相互傳值 四 修飾符 1 vue自帶修飾符 修飾符字首 作用.once 事件只執行一次 capture 給元素新增乙個 當元素發生冒泡時,先觸發帶有該修飾符的元素。若有多個該修飾符,則由外而...
Vue原始碼之render函式(四)
在 mount函式中,最後呼叫的updatecomponent函式,該函式中的呼叫了例項的私有函式vm.render,因此,現在需要弄清楚vm.render函式完成了什麼功能。在 src core instance render.js 中,在vue的原型上定義了私有 render函式。1.首先從vm...