fix(compat): should not warn COMPILER_V_BIND_OBJECT_ORDER when using v-bind together with v-for (#12993)

fix #12992
This commit is contained in:
yangxiuxiu 2025-05-22 08:44:34 +08:00 committed by GitHub
parent 949df80880
commit 93949e6587
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 4 deletions

View File

@ -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)

View File

@ -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: `<div><div v-bind="{ id: 'bar', class: 'baz' }" v-for="item in 5" /></div>`,
}).$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({