refactor(runtime-core): extract function isReservedPrefix
(#3265)
* chore(runtime-core): extract function isReservedKey * chore: improve code Co-authored-by: Evan You <yyx990803@gmail.com>
This commit is contained in:
parent
40794c80ca
commit
2a9e9a4096
@ -58,7 +58,8 @@ import { EmitsOptions, EmitsToProps } from './componentEmits'
|
||||
import { Directive } from './directives'
|
||||
import {
|
||||
CreateComponentPublicInstance,
|
||||
ComponentPublicInstance
|
||||
ComponentPublicInstance,
|
||||
isReservedPrefix
|
||||
} from './componentPublicInstance'
|
||||
import { warn } from './warning'
|
||||
import { VNodeChild } from './vnode'
|
||||
@ -681,7 +682,7 @@ export function applyOptions(instance: ComponentInternalInstance) {
|
||||
for (const key in data) {
|
||||
checkDuplicateProperties!(OptionTypes.DATA, key)
|
||||
// expose data on ctx during dev
|
||||
if (key[0] !== '$' && key[0] !== '_') {
|
||||
if (!isReservedPrefix(key[0])) {
|
||||
Object.defineProperty(ctx, key, {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
|
@ -274,6 +274,8 @@ export interface ComponentRenderContext {
|
||||
_: ComponentInternalInstance
|
||||
}
|
||||
|
||||
export const isReservedPrefix = (key: string) => key === '_' || key === '$'
|
||||
|
||||
export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
|
||||
get({ _: instance }: ComponentRenderContext, key: string) {
|
||||
const { ctx, setupState, data, props, accessCache, type, appContext } =
|
||||
@ -385,11 +387,7 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
|
||||
// to infinite warning loop
|
||||
key.indexOf('__v') !== 0)
|
||||
) {
|
||||
if (
|
||||
data !== EMPTY_OBJ &&
|
||||
(key[0] === '$' || key[0] === '_') &&
|
||||
hasOwn(data, key)
|
||||
) {
|
||||
if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {
|
||||
warn(
|
||||
`Property ${JSON.stringify(
|
||||
key
|
||||
@ -571,7 +569,7 @@ export function exposeSetupStateOnRenderContext(
|
||||
const { ctx, setupState } = instance
|
||||
Object.keys(toRaw(setupState)).forEach(key => {
|
||||
if (!setupState.__isScriptSetup) {
|
||||
if (key[0] === '$' || key[0] === '_') {
|
||||
if (isReservedPrefix(key[0])) {
|
||||
warn(
|
||||
`setup() return property ${JSON.stringify(
|
||||
key
|
||||
|
Loading…
Reference in New Issue
Block a user