refactor(compiler-vapor): check reserved prop on compiler only
This commit is contained in:
parent
808d17dbd1
commit
d282af9430
|
@ -8,12 +8,7 @@ import {
|
|||
createCompilerError,
|
||||
createSimpleExpression,
|
||||
} from '@vue/compiler-dom'
|
||||
import {
|
||||
extend,
|
||||
isBuiltInDirective,
|
||||
isVaporReservedProp,
|
||||
isVoidTag,
|
||||
} from '@vue/shared'
|
||||
import { extend, isBuiltInDirective, isVoidTag, makeMap } from '@vue/shared'
|
||||
import type {
|
||||
DirectiveTransformResult,
|
||||
NodeTransform,
|
||||
|
@ -27,6 +22,11 @@ import {
|
|||
} from '../ir'
|
||||
import { EMPTY_EXPRESSION } from './utils'
|
||||
|
||||
export const isReservedProp = /*#__PURE__*/ makeMap(
|
||||
// the leading comma is intentional so empty string "" is also included
|
||||
',key,ref,ref_for,ref_key,',
|
||||
)
|
||||
|
||||
export const transformElement: NodeTransform = (node, context) => {
|
||||
return function postTransformElement() {
|
||||
node = context.node
|
||||
|
@ -145,9 +145,9 @@ function transformProp(
|
|||
context: TransformContext<ElementNode>,
|
||||
): DirectiveTransformResult | void {
|
||||
const { name } = prop
|
||||
if (isVaporReservedProp(name)) return
|
||||
|
||||
if (prop.type === NodeTypes.ATTRIBUTE) {
|
||||
if (isReservedProp(name)) return
|
||||
return {
|
||||
key: createSimpleExpression(prop.name, true, prop.nameLoc),
|
||||
value: prop.value
|
||||
|
|
|
@ -5,9 +5,10 @@ import {
|
|||
createCompilerError,
|
||||
createSimpleExpression,
|
||||
} from '@vue/compiler-dom'
|
||||
import { camelize, isVaporReservedProp } from '@vue/shared'
|
||||
import { camelize } from '@vue/shared'
|
||||
import type { DirectiveTransform, TransformContext } from '../transform'
|
||||
import { resolveExpression } from '../utils'
|
||||
import { isReservedProp } from './transformElement'
|
||||
|
||||
// same-name shorthand - :arg is expanded to :arg="arg"
|
||||
export function normalizeBindShorthand(
|
||||
|
@ -52,7 +53,8 @@ export const transformVBind: DirectiveTransform = (dir, node, context) => {
|
|||
exp = resolveExpression(exp)
|
||||
arg = resolveExpression(arg)
|
||||
|
||||
if (arg.isStatic && isVaporReservedProp(arg.content)) return
|
||||
if (arg.isStatic && isReservedProp(arg.content)) return
|
||||
|
||||
let camel = false
|
||||
if (modifiers.includes('camel')) {
|
||||
if (arg.isStatic) {
|
||||
|
|
|
@ -10,7 +10,6 @@ import {
|
|||
hyphenate,
|
||||
isArray,
|
||||
isFunction,
|
||||
isVaporReservedProp,
|
||||
} from '@vue/shared'
|
||||
import { shallowReactive, shallowReadonly, toRaw } from '@vue/reactivity'
|
||||
import { warn } from './warning'
|
||||
|
@ -85,11 +84,6 @@ export function initProps(
|
|||
let rawCastValues: Data | undefined
|
||||
if (rawProps) {
|
||||
for (let key in rawProps) {
|
||||
// key, ref are reserved and never passed down
|
||||
if (isVaporReservedProp(key)) {
|
||||
continue
|
||||
}
|
||||
|
||||
const valueGetter = () => rawProps[key]
|
||||
let camelKey
|
||||
if (options && hasOwn(options, (camelKey = camelize(key)))) {
|
||||
|
|
|
@ -93,11 +93,6 @@ export const isReservedProp = /*#__PURE__*/ makeMap(
|
|||
'onVnodeBeforeUnmount,onVnodeUnmounted',
|
||||
)
|
||||
|
||||
export const isVaporReservedProp = /*#__PURE__*/ makeMap(
|
||||
// the leading comma is intentional so empty string "" is also included
|
||||
',key,ref,ref_for,ref_key,',
|
||||
)
|
||||
|
||||
export const isBuiltInDirective = /*#__PURE__*/ makeMap(
|
||||
'bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo',
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue