From: Evan You Date: Mon, 22 Apr 2024 12:47:45 +0000 (+0800) Subject: fix(runtime-core): props should be readonly via direct template access X-Git-Tag: v3.4.24~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b93f26464785de227b88c51a88328ae80e80d804;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-core): props should be readonly via direct template access close #8216 close #10736 --- diff --git a/packages/runtime-core/src/componentRenderUtils.ts b/packages/runtime-core/src/componentRenderUtils.ts index 4b83c69903..6f4a1a2af7 100644 --- a/packages/runtime-core/src/componentRenderUtils.ts +++ b/packages/runtime-core/src/componentRenderUtils.ts @@ -26,6 +26,7 @@ import { isCompatEnabled, warnDeprecation, } from './compat/compatConfig' +import { shallowReadonly } from '@vue/reactivity' /** * dev only flag to track whether $attrs was used during render. @@ -48,7 +49,6 @@ export function renderComponentRoot( vnode, proxy, withProxy, - props, propsOptions: [propsOptions], slots, attrs, @@ -60,10 +60,11 @@ export function renderComponentRoot( ctx, inheritAttrs, } = instance + const props = __DEV__ ? shallowReadonly(instance.props) : instance.props + const prev = setCurrentRenderingInstance(instance) let result let fallthroughAttrs - const prev = setCurrentRenderingInstance(instance) if (__DEV__) { accessedAttrs = false }