Home / Function/ renderMixin() — vue Function Reference

renderMixin() — vue Function Reference

Architecture documentation for the renderMixin() function in render.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  663f50a8_8d82_e040_32bd_1250a516fe5f["renderMixin()"]
  2c65c43e_4691_415f_689a_805ec38ae46c["render.ts"]
  663f50a8_8d82_e040_32bd_1250a516fe5f -->|defined in| 2c65c43e_4691_415f_689a_805ec38ae46c
  d77f5342_b1e8_4d01_7f2b_c320dfa66cc5["installRenderHelpers()"]
  663f50a8_8d82_e040_32bd_1250a516fe5f -->|calls| d77f5342_b1e8_4d01_7f2b_c320dfa66cc5
  e490d83e_fe82_d38d_a362_5157771a3160["normalizeScopedSlots()"]
  663f50a8_8d82_e040_32bd_1250a516fe5f -->|calls| e490d83e_fe82_d38d_a362_5157771a3160
  00b70ac3_a73a_7bf1_5a47_3d25ad81af5d["createEmptyVNode()"]
  663f50a8_8d82_e040_32bd_1250a516fe5f -->|calls| 00b70ac3_a73a_7bf1_5a47_3d25ad81af5d
  style 663f50a8_8d82_e040_32bd_1250a516fe5f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/core/instance/render.ts lines 95–172

export function renderMixin(Vue: typeof Component) {
  // install runtime convenience helpers
  installRenderHelpers(Vue.prototype)

  Vue.prototype.$nextTick = function (fn: (...args: any[]) => any) {
    return nextTick(fn, this)
  }

  Vue.prototype._render = function (): VNode {
    const vm: Component = this
    const { render, _parentVnode } = vm.$options

    if (_parentVnode && vm._isMounted) {
      vm.$scopedSlots = normalizeScopedSlots(
        vm.$parent!,
        _parentVnode.data!.scopedSlots,
        vm.$slots,
        vm.$scopedSlots
      )
      if (vm._slotsProxy) {
        syncSetupSlots(vm._slotsProxy, vm.$scopedSlots)
      }
    }

    // set parent vnode. this allows render functions to have access
    // to the data on the placeholder node.
    vm.$vnode = _parentVnode!
    // render self
    const prevInst = currentInstance
    const prevRenderInst = currentRenderingInstance
    let vnode
    try {
      setCurrentInstance(vm)
      currentRenderingInstance = vm
      vnode = render.call(vm._renderProxy, vm.$createElement)
    } catch (e: any) {
      handleError(e, vm, `render`)
      // return error render result,
      // or previous vnode to prevent render error causing blank component
      /* istanbul ignore else */
      if (__DEV__ && vm.$options.renderError) {
        try {
          vnode = vm.$options.renderError.call(
            vm._renderProxy,
            vm.$createElement,
            e
          )
        } catch (e: any) {
          handleError(e, vm, `renderError`)
          vnode = vm._vnode
        }
      } else {
        vnode = vm._vnode
      }
    } finally {
      currentRenderingInstance = prevRenderInst
      setCurrentInstance(prevInst)
    }
    // if the returned array contains only a single node, allow it
    if (isArray(vnode) && vnode.length === 1) {
      vnode = vnode[0]
    }
    // return empty vnode in case the render function errored out
    if (!(vnode instanceof VNode)) {
      if (__DEV__ && isArray(vnode)) {
        warn(
          'Multiple root nodes returned from render function. Render function ' +
            'should return a single root node.',
          vm
        )
      }
      vnode = createEmptyVNode()
    }
    // set parent
    vnode.parent = _parentVnode
    return vnode
  }
}

Domain

Subdomains

Frequently Asked Questions

What does renderMixin() do?
renderMixin() is a function in the vue codebase, defined in src/core/instance/render.ts.
Where is renderMixin() defined?
renderMixin() is defined in src/core/instance/render.ts at line 95.
What does renderMixin() call?
renderMixin() calls 3 function(s): createEmptyVNode, installRenderHelpers, normalizeScopedSlots.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free