Skip to content

Commit e3fb6fe

Browse files
committed
remove <render> tag
1 parent d398023 commit e3fb6fe

File tree

6 files changed

+3
-218
lines changed

6 files changed

+3
-218
lines changed

flow/compiler.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ declare type ASTElement = {
8484
ref?: string,
8585
refInFor?: boolean,
8686

87-
render?: true,
88-
renderMethod?: ?string,
89-
renderArgs?: ?string,
90-
9187
if?: string,
9288
ifProcessed?: boolean,
9389
else?: true,

src/compiler/codegen.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ function genElement (el: ASTElement): string {
4545
return genIf(el)
4646
} else if (el.tag === 'template' && !el.slotTarget) {
4747
return genChildren(el) || 'void 0'
48-
} else if (el.tag === 'render') {
49-
return genRender(el)
5048
} else if (el.tag === 'slot') {
5149
return genSlot(el)
5250
} else {
@@ -245,18 +243,6 @@ function genText (text: ASTText | ASTExpression): string {
245243
: '_t(' + JSON.stringify(text.text) + ')'
246244
}
247245

248-
function genRender (el: ASTElement): string {
249-
if (!el.renderMethod) {
250-
return 'void 0'
251-
}
252-
const children = genChildren(el)
253-
return `${el.renderMethod}(${
254-
el.renderArgs || ''
255-
}${
256-
children ? (el.renderArgs ? ',' : '') + children : ''
257-
})`
258-
}
259-
260246
function genSlot (el: ASTElement): string {
261247
const slot = `$slots[${el.slotName || '"default"'}]`
262248
const children = genChildren(el)

src/compiler/parser/index.js

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ export function parse (
123123
// determine whether this is a plain element after
124124
// removing if/for/once attributes
125125
element.plain = !element.key && !attrs.length
126-
processRender(element)
127126
processSlot(element)
128127
processComponent(element)
129128
for (let i = 0; i < transforms.length; i++) {
@@ -145,8 +144,8 @@ export function parse (
145144
}
146145
if (element.attrsMap.hasOwnProperty('v-for')) {
147146
warn(
148-
'Cannot use v-for on component root element because it renders ' +
149-
'multiple elements:\n' + template
147+
'Cannot use v-for on stateful component root element because ' +
148+
'it renders multiple elements:\n' + template
150149
)
151150
}
152151
}
@@ -306,24 +305,6 @@ function processOnce (el) {
306305
}
307306
}
308307

309-
function processRender (el) {
310-
if (el.tag === 'render') {
311-
el.render = true
312-
el.renderMethod = el.attrsMap[':method'] || el.attrsMap['v-bind:method']
313-
el.renderArgs = el.attrsMap[':args'] || el.attrsMap['v-bind:args']
314-
if (process.env.NODE_ENV !== 'production') {
315-
if (el.attrsMap.method) {
316-
warn('<render> method should use a dynamic binding, e.g. `:method="..."`.')
317-
} else if (!el.renderMethod) {
318-
warn('method attribute is required on <render>.')
319-
}
320-
if (el.attrsMap.args) {
321-
warn('<render> args should use a dynamic binding, e.g. `:args="..."`.')
322-
}
323-
}
324-
}
325-
}
326-
327308
function processSlot (el) {
328309
if (el.tag === 'slot') {
329310
el.slotName = getBindingAttr(el, 'name')

test/unit/features/render/render.spec.js

Lines changed: 0 additions & 134 deletions
This file was deleted.

test/unit/modules/compiler/codegen.spec.js

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -113,28 +113,6 @@ describe('codegen', () => {
113113
)
114114
})
115115

116-
it('generate render tag', () => {
117-
assertCodegen(
118-
'<render :method="onRender" :args="params"></render>',
119-
`with(this){return onRender(params)}`
120-
)
121-
})
122-
123-
it('generate render tag that have children', () => {
124-
assertCodegen(
125-
'<render :method="onRender"><p>hello</p></render>',
126-
`with(this){return onRender([_m(0)])}`,
127-
[`with(this){return _h(_e('p'),[_t("hello")])}`]
128-
)
129-
})
130-
131-
it('generate render tag with `method` is not dynamic binding', () => {
132-
assertCodegen(
133-
'<render method="onRender"></render>',
134-
`with(this){return void 0}`
135-
)
136-
})
137-
138116
it('generate single slot', () => {
139117
assertCodegen(
140118
'<slot></slot>',

test/unit/modules/compiler/parser.spec.js

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ describe('parser', () => {
8989

9090
it('warn v-for on root element', () => {
9191
parse('<div v-for="item in items"></div>', baseOptions)
92-
expect('Cannot use v-for on component root element').toHaveBeenWarned()
92+
expect('Cannot use v-for on stateful component root element').toHaveBeenWarned()
9393
})
9494

9595
it('v-pre directive', () => {
@@ -162,28 +162,6 @@ describe('parser', () => {
162162
expect(ast.once).toBe(true)
163163
})
164164

165-
it('render tag syntax', () => {
166-
const ast = parse('<render :method="onRender", :args="params"></render>', baseOptions)
167-
expect(ast.render).toBe(true)
168-
expect(ast.renderMethod).toBe('onRender')
169-
expect(ast.renderArgs).toBe('params')
170-
})
171-
172-
it('render tag invalid syntax', () => {
173-
// method nothing
174-
const invalidAst1 = parse('<render></render>', baseOptions)
175-
expect('method attribute is required on <render>.').toHaveBeenWarned()
176-
expect(invalidAst1.render).toBe(true)
177-
expect(invalidAst1.renderMethod).toBeUndefined()
178-
expect(invalidAst1.renderArgs).toBeUndefined()
179-
// method no dynamic binding
180-
parse('<render method="onRender"></render>', baseOptions)
181-
expect('<render> method should use a dynamic binding').toHaveBeenWarned()
182-
// args no dynamic binding
183-
parse('<render :method="onRender" args="params"></render>', baseOptions)
184-
expect('<render> args should use a dynamic binding').toHaveBeenWarned()
185-
})
186-
187165
it('slot tag single syntax', () => {
188166
const ast = parse('<slot></slot>', baseOptions)
189167
expect(ast.tag).toBe('slot')

0 commit comments

Comments
 (0)