Przejdź bezpośrednio do treści

Render Function APIs

h()

Tworzy wirtualne węzły DOM (vnodes).

  • Typ

    ts
    // pełne oznaczenie function h(  type: string | Component,  props?: object | null,  children?: Children | Slot | Slots ): VNode  // Pomijanie propsów function h(type: string | Component, children?: Children | Slot): VNode  type Children = string | number | boolean | VNode | null | Children[]  type Slot = () => Children  type Slots = { [name: string]: Slot }

    Typy zostały uproszczone w celu zwiększenia czytelności.

  • Szczegóły

    Pierwszy argument może być ciągiem znaków (dla elementów natywnych) lub definicją komponentu Vue. Drugi argument to właściwości, które mają zostać przekazane, a trzeci argument to elementy podrzędne.

    Podczas tworzenia vnode komponentu elementy podrzędne muszą zostać przekazane jako funkcje slotów. Pojedyncza funkcja slotu może zostać przekazana, jeśli komponent oczekuje tylko domyślnego slotu. W przeciwnym razie sloty muszą zostać przekazane jako obiekt funkcji slotów.

    Dla wygody argument props można pominąć, jeśli elementy podrzędne nie są obiektami slotów.

  • Przykład

    Tworzenie elementów natywnych:

    js
    import { h } from 'vue'  // wszystkie argumenty poza typem są opcjonalne h('div') h('div', { id: 'foo' })  // atrybuty i właściwości mogą być używane w rekwizytach // Vue automatycznie wybiera właściwy sposób ich przypisania h('div', { class: 'bar', innerHTML: 'hello' })  // klasa i styl mają ten sam obiekt / tablicę // obsługa wartości jak w szablonach h('div', { class: [foo, { bar }], style: { color: 'red' } })  // nasłuchiwacze zdarzeń powinni być przekazywani jako onXxx h('div', { onClick: () => {} })  // dzieci mogą być ciągiem znaków h('div', { id: 'foo' }, 'hello')  // właściwości można pominąć, gdy nie ma żadnych właściwości h('div', 'hello') h('div', [h('span', 'hello')])  // tablica dzieci może zawierać mieszane węzły wirtualne i ciągi znaków h('div', ['hello', h('span', 'hello')])

    Tworzenie komponentów:

    js
    import Foo from './Foo.vue'  // przekazywanie propsów h(Foo, {  // odpowiednik some-prop="hello"  someProp: 'hello',  // odpowiednik @update="() => {}"  onUpdate: () => {} })  // przekazywanie pojedynczego domyślnego slotu h(Foo, () => 'default slot')  // przekazywanie nazwanych slotów // zauważ, że `null` jest wymagane, aby uniknąć // traktowania obiektu slotów jako rekwizytów h(MyComponent, null, {  default: () => 'default slot',  foo: () => h('div', 'foo'),  bar: () => [h('span', 'one'), h('span', 'two')] })
  • Zobacz także Przewodnik - Funkcje renderujące - Tworzenie węzłów wirtualnych

mergeProps()

Scalanie wielu obiektów rekwizytów ze specjalnym traktowaniem niektórych rekwizytów.

  • Typ

    ts
    function mergeProps(...args: object[]): object
  • Szczegóły

    mergeProps() obsługuje scalanie wielu obiektów props ze specjalnym traktowaniem następujących props:

    • class
    • style
    • onXxx event listeners - wiele obiektów listener o tej samej nazwie zostanie scalonych w tablicę.

    Jeśli nie potrzebujesz zachowania scalania i chcesz prostych nadpisów, możesz użyć natywnego rozprzestrzeniania obiektów.

  • Przykład

    js
    import { mergeProps } from 'vue'  const one = {  class: 'foo',  onClick: handlerA }  const two = {  class: { bar: true },  onClick: handlerB }  const merged = mergeProps(one, two) /**  {  class: 'foo bar',  onClick: [handlerA, handlerB]  }  */

cloneVNode()

Klonuje vnode.

  • Typ

    ts
    function cloneVNode(vnode: VNode, extraProps?: object): VNode
  • Szczegóły

    Zwraca sklonowany vnode, opcjonalnie z dodatkowymi właściwościami do scalenia z oryginałem.

    Vnode powinny być uważane za niezmienne po utworzeniu i nie należy mutować właściwości istniejącego vnode. Zamiast tego należy go sklonować z innymi / dodatkowymi właściwościami.

    Vnode mają specjalne właściwości wewnętrzne, więc ich klonowanie nie jest tak proste jak rozprzestrzenianie obiektu. cloneVNode() obsługuje większość wewnętrznej logiki.

  • Przykład

    js
    import { h, cloneVNode } from 'vue'  const original = h('div') const cloned = cloneVNode(original, { id: 'foo' })

isVNode()

Sprawdza czy wartość jest vnode.

  • Typ

    ts
    function isVNode(value: unknown): boolean

resolveComponent()

Do ręcznego rozwiązywania zarejestrowanego komponentu według nazwy.

  • Typ

    ts
    function resolveComponent(name: string): Component | string
  • Szczegóły

    Uwaga: nie jest to potrzebne, jeśli możesz zaimportować komponent bezpośrednio.

    resolveComponent() musi zostać wywołane wewnątrz albo setup() albo funkcji renderowania, aby rozwiązać z prawidłowego kontekstu komponentu.

    Jeśli komponent nie zostanie znaleziony, zostanie wyemitowane ostrzeżenie w czasie wykonywania, a ciąg nazw zostanie zwrócony.

  • Przykład

    js
    import { h, resolveComponent } from 'vue'  export default {  setup() {  const ButtonCounter = resolveComponent('ButtonCounter')   return () => {  return h(ButtonCounter)  }  } }
    js
    import { h, resolveComponent } from 'vue'  export default {  render() {  const ButtonCounter = resolveComponent('ButtonCounter')  return h(ButtonCounter)  } }
  • Zobacz także Przewodnik - Funkcje renderowania - Komponenty

resolveDirective()

Do ręcznego rozwiązywania zarejestrowanej dyrektywy według nazwy.

  • Typ

    ts
    function resolveDirective(name: string): Directive | undefined
  • Szczegóły

Uwaga: nie jest to potrzebne, jeśli możesz zaimportować dyrektywę bezpośrednio.

resolveDirective() musi zostać wywołane wewnątrz albo setup() albo funkcji render, aby rozwiązać z właściwego kontekstu komponentu.

Jeśli dyrektywa nie zostanie znaleziona, zostanie wyemitowane ostrzeżenie w czasie wykonywania, a funkcja zwróci undefined.

withDirectives()

Do dodawania niestandardowych dyrektyw do vnode'ów.

  • Typ

    ts
    function withDirectives(  vnode: VNode,  directives: DirectiveArguments ): VNode  // [Dyrektywa, wartość, argument, modyfikatory] type DirectiveArguments = Array<  | [Directive]  | [Directive, any]  | [Directive, any, string]  | [Directive, any, string, DirectiveModifiers] >
  • Szczegóły

    Owija istniejący vnode niestandardowymi dyrektywami. Drugi argument to tablica niestandardowych dyrektyw. Każda niestandardowa dyrektywa jest również reprezentowana jako tablica w formie [Dyrektywa, wartość, argument, modyfikatory]. Elementy końcowe tablicy można pominąć, jeśli nie są potrzebne.

  • Przykład

    js
    import { h, withDirectives } from 'vue'  // dyrektywa niestandardowa const pin = {  mounted() {  /* ... */  },  updated() {  /* ... */  } }  // <div v-pin:top.animate="200"></div> const vnode = withDirectives(h('div'), [  [pin, 200, 'top', { animate: true }] ])
  • Zobacz także Przewodnik - Funkcje renderowania - Dyrektywy niestandardowe

withModifiers()

Aby dodać wbudowane modyfikatory v-on do funkcji obsługi zdarzeń.

  • Typ

    ts
    function withModifiers(fn: Function, modifiers: ModifierGuardsKeys[]): Function
  • Przykład

    js
    import { h, withModifiers } from 'vue'  const vnode = h('button', {  // odpowiednik v-on:click.stop.prevent  onClick: withModifiers(() => {  // ...  }, ['stop', 'prevent']) })
  • Zobacz także Przewodnik - Funkcje renderowania - Modyfikatory zdarzeń

Render Function APIsJest załadowany