Skip to content
āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ

Render Function APIs ​

h() ​

āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ DOM āύ⧋āĻĄ (vnodes) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    // full signature
    function h(
      type: string | Component,
      props?: object | null,
      children?: Children | Slot | Slots
    ): VNode
    
    // omitting props
    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 }

    āϟāĻžāχāĻĒāϗ⧁āϞāĻŋ āϰāĻŋāĻĄāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋāϰ āϜāĻ¨ā§āϝ āϏāϰāϞ⧀āĻ•ā§ƒāϤāĨ¤

  • āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ

    āĻĒā§āϰāĻĨāĻŽ āφāϰāϗ⧁āĻŽā§‡āĻ¨ā§āϟāϟāĻŋ āĻšāϝāĻŧ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ (āύ⧇āϟāĻŋāĻ­ āχāϞāĻŋāĻŽā§‡āĻ¨ā§āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ) āĻŦāĻž āĻāĻ•āϟāĻŋ Vue āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āĻĄā§‡āĻĢāĻŋāύ⧇āχāĻļāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āφāϰāϗ⧁āĻŽā§‡āĻ¨ā§āϟāϟāĻŋ āĻšāϞ āĻĒā§āϰāĻĒāϏ āĻĒāĻžāϏ āĻ•āϰāĻž, āĻāĻŦāĻ‚ āϤ⧃āϤ⧀āϝāĻŧ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻšāϞ āϚāĻŋāĻ˛ā§āĻĄā§‡āύāĨ¤

    āĻāĻ•āϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ vnode āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϚāĻŋāĻ˛ā§āĻĄā§‡āύāϕ⧇ āĻ¸ā§āϞāϟ āĻĢāĻžāĻ‚āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāĻžāϏ āĻ•āϰāĻž āφāĻŦāĻļā§āϝāĻ•. āĻāĻ•āϟāĻŋ āϏāĻŋāĻ™ā§āϗ⧇āϞ āĻ¸ā§āϞāϟ āĻĢāĻžāĻ‚āĻļāύ āĻĒāĻžāϏ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻĻāĻŋ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ¸ā§āϞāϟ āĻāĻ•ā§āϏāĻĒ⧇āĻ•ā§āϟ āĻ•āϰ⧇āĨ¤ āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ, āĻ¸ā§āϞāϟāϗ⧁āϞāĻŋāϕ⧇ āĻ¸ā§āϞāϟ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāĻžāϏ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

    āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϜāĻ¨ā§āϝ, āĻĒā§āϰāĻĒāϏ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻŦāĻžāĻĻ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻ–āύ āϚāĻŋāĻ˛ā§āĻĄā§‡āύ āĻ¸ā§āϞāϟ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āύāĻž āĻšāϝāĻŧāĨ¤

  • āωāĻĻāĻžāĻšāϰāύ

    āύ⧇āϟāĻŋāĻ­ āχāϞāĻŋāĻŽā§‡āĻ¨ā§āϟāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž:

    js
    import { h } from 'vue'
    
    // all arguments except the type are optional
    h('div')
    h('div', { id: 'foo' })
    
    // both attributes and properties can be used in props
    // Vue automatically picks the right way to assign it
    h('div', { class: 'bar', innerHTML: 'hello' })
    
    // class and style have the same object / array
    // value support like in templates
    h('div', { class: [foo, { bar }], style: { color: 'red' } })
    
    // event listeners should be passed as onXxx
    h('div', { onClick: () => {} })
    
    // children can be a string
    h('div', { id: 'foo' }, 'hello')
    
    // props can be omitted when there are no props
    h('div', 'hello')
    h('div', [h('span', 'hello')])
    
    // children array can contain mixed vnodes and strings
    h('div', ['hello', h('span', 'hello')])

    āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž:

    js
    import Foo from './Foo.vue'
    
    // passing props
    h(Foo, {
      // equivalent of some-prop="hello"
      someProp: 'hello',
      // equivalent of @update="() => {}"
      onUpdate: () => {}
    })
    
    // passing single default slot
    h(Foo, () => 'default slot')
    
    // passing named slots
    // notice the `null` is required to avoid
    // slots object being treated as props
    h(MyComponent, null, {
      default: () => 'default slot',
      foo: () => h('div', 'foo'),
      bar: () => [h('span', 'one'), h('span', 'two')]
    })
  • āφāϰ⧋ āĻĻ⧇āϖ⧁āύ Guide - Render Functions - Creating VNodes

mergeProps() ​

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϰāĻĒāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻļ⧇āώ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āϏāĻš āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒā§āϰāĻĒāϏ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰ⧁āύāĨ¤

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function mergeProps(...args: object[]): object
  • āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ

    mergeProps() āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒā§āϰāĻĒāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻļ⧇āώ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āϏāĻš āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒā§āϰāĻĒāϏ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻŽāĻžāĻ°ā§āϜāĻŋāĻ‚ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇:

    • class
    • style
    • onXxx āχāϭ⧇āĻ¨ā§āϟ āϞāĻŋāϏ⧇āύāĻžāϰ - āĻāĻ•āχ āύāĻžāĻŽā§‡āϰ āĻāĻ•āĻžāϧāĻŋāĻ• āϞāĻŋāϏ⧇āύāĻžāϰ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϰ⧇āϤ⧇ āĻŽāĻžāĻ°ā§āϜ āĻšāĻŦ⧇āĨ¤

    āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻŽāĻžāĻ°ā§āϜ āĻŦāĻŋāĻšā§āϝ⧇āĻ­āĻŋ⧟āĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻŋāĻŽā§āĻĒāϞ āĻ“āĻ­āĻžāϰāϰāĻžāχāϟ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āύ⧇āϟāĻŋāĻ­ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻĒā§āϰ⧇āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

  • āωāĻĻāĻžāĻšāϰāύ

    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() ​

āĻāĻ•āϟāĻŋ vnode āϤ⧈āϰāĻŋ āĻ•āϰāĻžāĨ¤

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function cloneVNode(vnode: VNode, extraProps?: object): VNode
  • āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ

    āĻāĻ•āϟāĻŋ āĻ•ā§āϞ⧋āύ āĻ•āϰāĻž Vnode āϰāĻŋāϟāĻžāĻ°ā§āύ āĻĻ⧇āϝāĻŧ, āĻ…āĻĒāĻļāύāĻžāϞāĻŋ āĻ…āϰāĻŋāϜāĻŋāύāĻžāϞāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•ā§āϏāĻŸā§āϰāĻž āĻĒā§āϰāĻĒāϏ āϏāĻšāĨ¤

    āĻāĻ•āĻŦāĻžāϰ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ Vnode-āϗ⧁āϞāĻŋāϕ⧇ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧀āϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ vnode-āĻāϰ āĻĒā§āϰāĻĒāϏāϗ⧁āϞāĻŋāϕ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻāϟāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ / āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒā§āϰāĻĒāϏ āĻĻāĻŋāϝāĻŧ⧇ āĻ•ā§āϞ⧋āύ āĻ•āϰ⧁āύāĨ¤

    vnode-āĻāϰ āĻŦāĻŋāĻļ⧇āώ āχāĻ¨ā§āϟāĻžāϰāĻ¨ā§āϝāĻžāϞ āĻĒā§āϰ⧋āĻĒāĻžāĻ°ā§āϟāĻŋāϏ āϰāϝāĻŧ⧇āϛ⧇, āϤāĻžāχ āϤāĻžāĻĻ⧇āϰ āĻ•ā§āϞ⧋āύ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āĻ¸ā§āĻĒ⧇āĻĄā§‡āϰ āĻŽāϤ⧋ āϏāĻŋāĻŽā§āĻĒāϞ āύāϝāĻŧāĨ¤ cloneVNode() āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āχāĻ¨ā§āϟāĻžāϰāĻ¨ā§āϝāĻžāϞ āϞāϜāĻŋāĻ• āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧇āĨ¤

  • āωāĻĻāĻžāĻšāϰāύ

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

isVNode() ​

āĻāĻ•āϟāĻŋ āĻ­ā§āϝāĻžāϞ⧁ vnode āĻ•āĻŋāύāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇.

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function isVNode(value: unknown): boolean

resolveComponent() ​

āύ⧇āχāĻŽ āĻ…āύ⧁āϏāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻžāĻĄ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function resolveComponent(name: string): Component | string
  • āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ

    Note: āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϤāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻāϟāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤

    resolveComponent() āϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āĻšāϝāĻŧ setup() āĻ…āĻĨāĻŦāĻž āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϝāĻžāϤ⧇ āĻ•āĻžāϰ⧇āĻ•ā§āϟ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ•āĻ¨ā§āĻŸā§‡āĻ•ā§āϏ āĻĨ⧇āϕ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

    āϝāĻĻāĻŋ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟāϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž āύāĻž āϝāĻžāϝāĻŧ, āĻāĻ•āϟāĻŋ āϰāĻžāύāϟāĻžāχāĻŽ āϏāϤāĻ°ā§āĻ•āϤāĻž āύāĻŋāĻ°ā§āĻ—āϤ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āύ⧇āχāĻŽ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϟāĻŋ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻŦ⧇āĨ¤

  • āωāĻĻāĻžāĻšāϰāύ

    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)
      }
    }
  • āφāϰ⧋ āĻĻ⧇āϖ⧁āύ Guide - Render Functions - Components

resolveDirective() ​

āύ⧇āχāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻ•āϟāĻŋ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻžāĻĄ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāĻŋāĻ­ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function resolveDirective(name: string): Directive | undefined
  • āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ

    Note: āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϤāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻāϟāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤

    āĻ•āĻžāϰ⧇āĻ•ā§āϟ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āĻ•āύāĻŸā§‡āĻ•ā§āϏ āĻĨ⧇āϕ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ resolveDirective() āϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āĻšāϝāĻŧ setup() āĻ…āĻĨāĻŦāĻž āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

    āϝāĻĻāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāĻŋāĻ­āϟāĻŋ āύāĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžā§Ÿ, āĻāĻ•āϟāĻŋ āϰāĻžāύāϟāĻžāχāĻŽ āϏāϤāĻ°ā§āĻ•āϤāĻž āύāĻŋāĻ°ā§āĻ—āϤ āĻšāĻŦ⧇, āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ undefined āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

  • āφāϰ⧋ āĻĻ⧇āϖ⧁āύ Guide - Render Functions - Custom Directives

withDirectives() ​

vnodes-āĻ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāĻŋāĻ­ āĻ…ā§āϝāĻžāĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ.

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function withDirectives(
      vnode: VNode,
      directives: DirectiveArguments
    ): VNode
    
    // [Directive, value, argument, modifiers]
    type DirectiveArguments = Array<
      | [Directive]
      | [Directive, any]
      | [Directive, any, string]
      | [Directive, any, string, DirectiveModifiers]
    >
  • āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ

    āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāĻŋāĻ­āϏāĻš āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ vnode āĻŽā§‹āĻĄāĻŧāĻžāύ⧋āĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āφāϰāϗ⧁āĻŽā§‡āĻ¨ā§āϟāϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāĻŋāĻ­āϗ⧁āϞ⧋āϰ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϰ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāĻŋāĻ­ [Directive, value, argument, modifiers] āφāĻ•āĻžāϰ⧇ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϰ⧇ āĻšāĻŋāϏāĻžāĻŦ⧇āĻ“ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύāĻž āĻšāϞ⧇ āĻ…ā§āϝāĻžāϰ⧇āϰ āĻŸā§‡āχāϞāĻŋāĻ‚ āχāϞāĻŋāĻŽā§‡āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻŦāĻžāĻĻ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

  • āωāĻĻāĻžāĻšāϰāύ

    js
    import { h, withDirectives } from 'vue'
    
    // a custom directive
    const pin = {
      mounted() {
        /* ... */
      },
      updated() {
        /* ... */
      }
    }
    
    // <div v-pin:top.animate="200"></div>
    const vnode = withDirectives(h('div'), [
      [pin, 200, 'top', { animate: true }]
    ])
  • āφāϰ⧋ āĻĻ⧇āϖ⧁āύ Guide - Render Functions - Custom Directives

withModifiers() ​

āĻāĻ•āϟāĻŋ āχāϭ⧇āĻ¨ā§āϟ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ⧇ āĻŦāĻŋāĻ˛ā§āϟ-āχāύ v-on modifiers āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤

  • āĻĒā§āϰāĻ•āĻžāϰ

    ts
    function withModifiers(fn: Function, modifiers: ModifierGuardsKeys[]): Function
  • āωāĻĻāĻžāĻšāϰāύ

    js
    import { h, withModifiers } from 'vue'
    
    const vnode = h('button', {
      // equivalent of v-on:click.stop.prevent
      onClick: withModifiers(() => {
        // ...
      }, ['stop', 'prevent'])
    })
  • āφāϰ⧋ āĻĻ⧇āϖ⧁āύ Guide - Render Functions - Event Modifiers

Render Function APIs has loaded