A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/vuejs/vue/commit/ea0d227d2ddfa5fc5e1112acf9cd485b4eae62cb below:

functional component support for compiled templates · vuejs/vue@ea0d227 · GitHub

@@ -4,6 +4,7 @@ import VNode from './vnode'

4 4

import { createElement } from './create-element'

5 5

import { resolveInject } from '../instance/inject'

6 6

import { resolveSlots } from '../instance/render-helpers/resolve-slots'

7 +

import { installRenderHelpers } from '../instance/render-helpers/index'

7 8 8 9

import {

9 10

isDef,

@@ -12,15 +13,43 @@ import {

12 13

validateProp

13 14

} from '../util/index'

14 15 16 +

function FunctionalRenderContext (

17 +

data,

18 +

props,

19 +

children,

20 +

parent,

21 +

Ctor

22 +

) {

23 +

const options = Ctor.options

24 +

this.data = data

25 +

this.props = props

26 +

this.children = children

27 +

this.parent = parent

28 +

this.listeners = data.on || emptyObject

29 +

this.injections = resolveInject(options.inject, parent)

30 +

this.slots = () => resolveSlots(children, parent)

31 +

// support for compiled functional template

32 +

if (options._compiled) {

33 +

this.constructor = Ctor

34 +

this.$options = options

35 +

this._c = parent._c

36 +

this.$slots = this.slots()

37 +

this.$scopedSlots = data.scopedSlots || emptyObject

38 +

}

39 +

}

40 + 41 +

installRenderHelpers(FunctionalRenderContext.prototype)

42 + 15 43

export function createFunctionalComponent (

16 44

Ctor: Class<Component>,

17 45

propsData: ?Object,

18 46

data: VNodeData,

19 -

context: Component,

47 +

contextVm: Component,

20 48

children: ?Array<VNode>

21 49

): VNode | void {

50 +

const options = Ctor.options

22 51

const props = {}

23 -

const propOptions = Ctor.options.props

52 +

const propOptions = options.props

24 53

if (isDef(propOptions)) {

25 54

for (const key in propOptions) {

26 55

props[key] = validateProp(key, propOptions, propsData || emptyObject)

@@ -31,20 +60,19 @@ export function createFunctionalComponent (

31 60

}

32 61

// ensure the createElement function in functional components

33 62

// gets a unique context - this is necessary for correct named slot check

34 -

const _context = Object.create(context)

35 -

const h = (a, b, c, d) => createElement(_context, a, b, c, d, true)

36 -

const vnode = Ctor.options.render.call(null, h, {

63 +

const _contextVm = Object.create(contextVm)

64 +

const h = (a, b, c, d) => createElement(_contextVm, a, b, c, d, true)

65 +

const renderContext = new FunctionalRenderContext(

37 66

data,

38 67

props,

39 68

children,

40 -

parent: context,

41 -

listeners: data.on || emptyObject,

42 -

injections: resolveInject(Ctor.options.inject, context),

43 -

slots: () => resolveSlots(children, context)

44 -

})

69 +

contextVm,

70 +

Ctor

71 +

)

72 +

const vnode = options.render.call(null, h, renderContext)

45 73

if (vnode instanceof VNode) {

46 -

vnode.functionalContext = context

47 -

vnode.functionalOptions = Ctor.options

74 +

vnode.functionalContext = contextVm

75 +

vnode.functionalOptions = options

48 76

if (data.slot) {

49 77

(vnode.data || (vnode.data = {})).slot = data.slot

50 78

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4