日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue.js 技术揭秘学习 (3) render

發布時間:2025/4/14 vue 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue.js 技术揭秘学习 (3) render 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Vue 的?_render?方法是實例的一個私有方法,它用來把實例渲染成一個虛擬 Node? ,返回的是一個VNode??

?

在 Vue 的官方文檔中介紹了?render?函數的第一個參數是?createElement,那么結合之前的例子:

<div id="app"> {{ message }} </div>

相當于我們編寫如下?render?函數:

render: function (createElement) { return createElement('div', { attrs: { id: 'app' }, }, this.message) }

再回到?_render?函數中的?render?方法的調用:

vnode = render.call(vm._renderProxy, vm.$createElement)

可以看到,render?函數中的?createElement?方法就是?vm.$createElement?方法:

export function initRender (vm: Component) { // ... // bind the createElement fn to this instance // so that we get proper render context inside it. // args order: tag, data, children, normalizationType, alwaysNormalize // internal version is used by render functions compiled from templates vm._c = (a, b, c, d) => createElement(vm, a, b, c, d, false) // normalization is always applied for the public version, used in // user-written render functions. vm.$createElement = (a, b, c, d) => createElement(vm, a, b, c, d, true) }

實際上,vm.$createElement?方法定義是在執行?initRender?方法的時候,可以看到除了?vm.$createElement?方法,還有一個?vm._c?方法,它是被模板編譯成的?render?函數使用,而?vm.$createElement?是用戶手寫?render?方法使用的, 這倆個方法支持的參數相同,并且內部都調用了?createElement?方法。

#總結

轉載于:https://www.cnblogs.com/guangzhou11/p/11298032.html

總結

以上是生活随笔為你收集整理的Vue.js 技术揭秘学习 (3) render的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。