Skip to content

Commit d282af9

Browse files
committed
refactor(compiler-vapor): check reserved prop on compiler only
1 parent 808d17d commit d282af9

File tree

4 files changed

+11
-20
lines changed

4 files changed

+11
-20
lines changed

packages/compiler-vapor/src/transforms/transformElement.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,7 @@ import {
88
createCompilerError,
99
createSimpleExpression,
1010
} from '@vue/compiler-dom'
11-
import {
12-
extend,
13-
isBuiltInDirective,
14-
isVaporReservedProp,
15-
isVoidTag,
16-
} from '@vue/shared'
11+
import { extend, isBuiltInDirective, isVoidTag, makeMap } from '@vue/shared'
1712
import type {
1813
DirectiveTransformResult,
1914
NodeTransform,
@@ -27,6 +22,11 @@ import {
2722
} from '../ir'
2823
import { EMPTY_EXPRESSION } from './utils'
2924

25+
export const isReservedProp = /*#__PURE__*/ makeMap(
26+
// the leading comma is intentional so empty string "" is also included
27+
',key,ref,ref_for,ref_key,',
28+
)
29+
3030
export const transformElement: NodeTransform = (node, context) => {
3131
return function postTransformElement() {
3232
node = context.node
@@ -145,9 +145,9 @@ function transformProp(
145145
context: TransformContext<ElementNode>,
146146
): DirectiveTransformResult | void {
147147
const { name } = prop
148-
if (isVaporReservedProp(name)) return
149148

150149
if (prop.type === NodeTypes.ATTRIBUTE) {
150+
if (isReservedProp(name)) return
151151
return {
152152
key: createSimpleExpression(prop.name, true, prop.nameLoc),
153153
value: prop.value

packages/compiler-vapor/src/transforms/vBind.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import {
55
createCompilerError,
66
createSimpleExpression,
77
} from '@vue/compiler-dom'
8-
import { camelize, isVaporReservedProp } from '@vue/shared'
8+
import { camelize } from '@vue/shared'
99
import type { DirectiveTransform, TransformContext } from '../transform'
1010
import { resolveExpression } from '../utils'
11+
import { isReservedProp } from './transformElement'
1112

1213
// same-name shorthand - :arg is expanded to :arg="arg"
1314
export function normalizeBindShorthand(
@@ -52,7 +53,8 @@ export const transformVBind: DirectiveTransform = (dir, node, context) => {
5253
exp = resolveExpression(exp)
5354
arg = resolveExpression(arg)
5455

55-
if (arg.isStatic && isVaporReservedProp(arg.content)) return
56+
if (arg.isStatic && isReservedProp(arg.content)) return
57+
5658
let camel = false
5759
if (modifiers.includes('camel')) {
5860
if (arg.isStatic) {

packages/runtime-vapor/src/componentProps.ts

-6
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
hyphenate,
1111
isArray,
1212
isFunction,
13-
isVaporReservedProp,
1413
} from '@vue/shared'
1514
import { shallowReactive, shallowReadonly, toRaw } from '@vue/reactivity'
1615
import { warn } from './warning'
@@ -85,11 +84,6 @@ export function initProps(
8584
let rawCastValues: Data | undefined
8685
if (rawProps) {
8786
for (let key in rawProps) {
88-
// key, ref are reserved and never passed down
89-
if (isVaporReservedProp(key)) {
90-
continue
91-
}
92-
9387
const valueGetter = () => rawProps[key]
9488
let camelKey
9589
if (options && hasOwn(options, (camelKey = camelize(key)))) {

packages/shared/src/general.ts

-5
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,6 @@ export const isReservedProp = /*#__PURE__*/ makeMap(
9393
'onVnodeBeforeUnmount,onVnodeUnmounted',
9494
)
9595

96-
export const isVaporReservedProp = /*#__PURE__*/ makeMap(
97-
// the leading comma is intentional so empty string "" is also included
98-
',key,ref,ref_for,ref_key,',
99-
)
100-
10196
export const isBuiltInDirective = /*#__PURE__*/ makeMap(
10297
'bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo',
10398
)

0 commit comments

Comments
 (0)