render関数は何ですか.
1946 ワード
render関数は何ですか.
簡単に言えば、vueではテンプレートHTML構文を使用してページを作成し、render関数を使用してjs言語でDOMを構築することができます.
vueは仮想DOMなので、templateテンプレートを取得する際にもVNodeの関数に変換し、render関数でDOMを構築すると、vueは変換の過程を免除します.
render関数を使用して仮想DOMを記述する場合、vueは仮想DOMを構築するために必要なツールである関数を提供します.公式サイトで彼にcreateElementという名前をつけた.
render関数の使い方
深いdataオブジェクト
テンプレート構文でv-bind:classとv-bind:styleが特別に扱われるように、VNodeデータオブジェクトでは、以下のプロパティ名が最もレベルの高いフィールドであることに注意してください.このオブジェクトでは、DOMプロパティのようにinnerHTML(v-htmlコマンドの代わりになります)のように、通常のHTMLプロパティをバインドすることもできます.
簡単に言えば、vueではテンプレートHTML構文を使用してページを作成し、render関数を使用してjs言語でDOMを構築することができます.
vueは仮想DOMなので、templateテンプレートを取得する際にもVNodeの関数に変換し、render関数でDOMを構築すると、vueは変換の過程を免除します.
render関数を使用して仮想DOMを記述する場合、vueは仮想DOMを構築するために必要なツールである関数を提供します.公式サイトで彼にcreateElementという名前をつけた.
render関数の使い方
render:(h) => {
return h('div',{
// div value
props: {
value:''
},
// div
style:{
width:'30px'
},
// div
on: {
click: () => {
console.log(' ')
}
},
})
}
深いdataオブジェクト
テンプレート構文でv-bind:classとv-bind:styleが特別に扱われるように、VNodeデータオブジェクトでは、以下のプロパティ名が最もレベルの高いフィールドであることに注意してください.このオブジェクトでは、DOMプロパティのようにinnerHTML(v-htmlコマンドの代わりになります)のように、通常のHTMLプロパティをバインドすることもできます.
{
// `v-bind:class` API
'class': {
foo: true,
bar: false
},
// `v-bind:style` API
style: {
color: 'red',
fontSize: '14px'
},
// HTML
attrs: {
id: 'foo'
},
// props
props: {
myProp: 'bar'
},
// DOM
domProps: {
innerHTML: 'baz'
},
// `on`
// `v-on:keyup.enter`
// keyCode。
on: {
click: this.clickHandler
},
// , ,
// `vm.$emit` 。
nativeOn: {
click: this.nativeClickHandler
},
// 。 , `binding` `oldValue`
// , Vue 。
directives: [
{
name: 'my-custom-directive',
value: '2',
expression: '1 + 1',
arg: 'foo',
modifiers: {
bar: true
}
}
],
// Scoped slots in the form of
// { name: props => VNode | Array }
scopedSlots: {
default: props => createElement('span', props.text)
},
// ,
slot: 'name-of-slot',
//
key: 'myKey',
ref: 'myRef'
}