From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:37:11 +0000 (+0100) Subject: fix(runtime-core): attrs should be readonly in functional components (#10767) X-Git-Tag: v3.4.26~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8fd6446d14a6899e5e8ab1ee394d90088e01844;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-core): attrs should be readonly in functional components (#10767) --- diff --git a/packages/runtime-core/__tests__/componentProps.spec.ts b/packages/runtime-core/__tests__/componentProps.spec.ts index 04fa420639..1cc43c91bc 100644 --- a/packages/runtime-core/__tests__/componentProps.spec.ts +++ b/packages/runtime-core/__tests__/componentProps.spec.ts @@ -17,7 +17,6 @@ import { ref, render, serializeInner, - toRaw, toRefs, watch, } from '@vue/runtime-test' @@ -129,12 +128,12 @@ describe('component props', () => { render(h(Comp, { foo: 1 }), root) expect(props).toEqual({ foo: 1 }) expect(attrs).toEqual({ foo: 1 }) - expect(toRaw(props)).toBe(attrs) + expect(props).toBe(attrs) render(h(Comp, { bar: 2 }), root) expect(props).toEqual({ bar: 2 }) expect(attrs).toEqual({ bar: 2 }) - expect(toRaw(props)).toBe(attrs) + expect(props).toBe(attrs) }) test('boolean casting', () => { diff --git a/packages/runtime-core/src/componentRenderUtils.ts b/packages/runtime-core/src/componentRenderUtils.ts index 31a1a5fa12..3044884669 100644 --- a/packages/runtime-core/src/componentRenderUtils.ts +++ b/packages/runtime-core/src/componentRenderUtils.ts @@ -116,7 +116,7 @@ export function renderComponentRoot( ? { get attrs() { markAttrsAccessed() - return attrs + return shallowReadonly(attrs) }, slots, emit,