From 93949e6587ee019bccd5b8b9d76f0e1ed6ea16fc Mon Sep 17 00:00:00 2001 From: yangxiuxiu <79584569+yangxiuxiu1115@users.noreply.github.com> Date: Thu, 22 May 2025 08:44:34 +0800 Subject: [PATCH] fix(compat): should not warn COMPILER_V_BIND_OBJECT_ORDER when using v-bind together with v-for (#12993) fix #12992 --- .../compiler-core/src/transforms/transformElement.ts | 9 +++++---- packages/vue-compat/__tests__/compiler.spec.ts | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 76ca1d443..1dca0c514 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -594,11 +594,9 @@ export function buildProps( hasDynamicKeys = true if (exp) { if (isVBind) { - // #10696 in case a v-bind object contains ref - pushRefVForMarker() - // have to merge early for compat build check - pushMergeArg() if (__COMPAT__) { + // have to merge early for compat build check + pushMergeArg() // 2.x v-bind object order compat if (__DEV__) { const hasOverridableKeys = mergeArgs.some(arg => { @@ -641,6 +639,9 @@ export function buildProps( } } + // #10696 in case a v-bind object contains ref + pushRefVForMarker() + pushMergeArg() mergeArgs.push(exp) } else { // v-on="obj" -> toHandlers(obj) diff --git a/packages/vue-compat/__tests__/compiler.spec.ts b/packages/vue-compat/__tests__/compiler.spec.ts index 2ae2f211a..68bb6e987 100644 --- a/packages/vue-compat/__tests__/compiler.spec.ts +++ b/packages/vue-compat/__tests__/compiler.spec.ts @@ -93,6 +93,16 @@ test('COMPILER_V_BIND_OBJECT_ORDER', () => { ).toHaveBeenWarned() }) +test('should not warn COMPILER_V_BIND_OBJECT_ORDER work with vFor', () => { + const vm = new Vue({ + template: `