From 8c5321e78369c86fb4e885eb5d2a65d1e92be680 Mon Sep 17 00:00:00 2001 From: yangchangtao Date: Tue, 4 Mar 2025 18:01:13 +0800 Subject: [PATCH 1/3] fix(compat): handle v-bind before v-for still throws COMPILER_V_BIND_OBJECT_ORDER warning --- .../compiler-core/src/transforms/transformElement.ts | 5 +++-- packages/vue-compat/__tests__/compiler.spec.ts | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 76ca1d44353..54bbfc5c365 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -594,8 +594,6 @@ 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__) { @@ -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 2ae2f211a10..072bb264ef7 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('COMPILER_V_BIND_OBJECT_ORDER', () => { + const vm = new Vue({ + template: `
`, + }).$mount() + expect(vm.$el).toBeInstanceOf(HTMLDivElement) + expect( + CompilerDeprecationTypes.COMPILER_V_BIND_OBJECT_ORDER, + ).not.toHaveBeenWarned() +}) + test('COMPILER_V_ON_NATIVE', () => { const spy = vi.fn() const vm = new Vue({ From 6ccdf9a5afe009802bad9fa82004737987f094d6 Mon Sep 17 00:00:00 2001 From: edison Date: Tue, 4 Mar 2025 20:24:42 +0800 Subject: [PATCH 2/3] Apply suggestions from code review --- packages/vue-compat/__tests__/compiler.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue-compat/__tests__/compiler.spec.ts b/packages/vue-compat/__tests__/compiler.spec.ts index 072bb264ef7..68bb6e987bc 100644 --- a/packages/vue-compat/__tests__/compiler.spec.ts +++ b/packages/vue-compat/__tests__/compiler.spec.ts @@ -93,7 +93,7 @@ test('COMPILER_V_BIND_OBJECT_ORDER', () => { ).toHaveBeenWarned() }) -test('COMPILER_V_BIND_OBJECT_ORDER', () => { +test('should not warn COMPILER_V_BIND_OBJECT_ORDER work with vFor', () => { const vm = new Vue({ template: `
`, }).$mount() From 51fb524a61b726e3f21984eb060da952d8876313 Mon Sep 17 00:00:00 2001 From: daiwei Date: Thu, 22 May 2025 08:25:34 +0800 Subject: [PATCH 3/3] chore: minor tweaks --- packages/compiler-core/src/transforms/transformElement.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 54bbfc5c365..1dca0c514c1 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -594,9 +594,9 @@ export function buildProps( hasDynamicKeys = true if (exp) { if (isVBind) { - // 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 => {