Skip to content

"oldVNode is undefined" when combining reactive and non-reactive values in template's condition #12410

@SergeiMinaev

Description

@SergeiMinaev

Vue version

3.5.13

Link to minimal reproduction

https://play.vuejs.org/#eNqNVGFP2zAQ/Ssnf0mqlnSs2xdoqm0MCabBpsH4gtEwyaU1pHZkOylT1f++s92WIlVoUlXFd++e352fvWSfmybrWmRHbGwLIxsHFl3bTLiS80YbB0so9LxpHZYD0OpCtyp8GqxgBZXRc0ioPuGKq0Ir6whOEMg9In3fO4bhENwMAY3RBmaiaVBZkNUaNwn0wmB5I+oWI6PHWyeMe+HcxeRweLzJlMKhpcjtHYW42ipM0x7kE2gbD/jqQWmvFyBVqwontXqdgyVXABVJTGt0oPJ3x6DGI/rr99dJiJvdqjvaT+ECfGnay5y+ckaqaer5AVZc0W88jOOkQdLC4bypCU0rgLGfrqc7h4Ww4MxfKganQRQziR3CA85EJ0nKYoYGgZo6MChINOViv1E6SBVGdXZ98T0yUkEM3Yfp3hMVjY4KHuR0ioZSQvnczjTvs6BpGEVttZ3pBUkxAyhqWTwFgUQbWInnoXWOJliI1hI5cSa6Lm8udUmaSJ0qsZIKyySeemSkI/cUUkknRb1V2IUjpar/lrje/FNQlnMWiPp9ziYnwVLSHsHS29YvVqvxMBbsK052PJBMfsephtXrqlJ20B3IKk/2ujZZD22NIxflyeaAwoElExIUIl4PoSLt+ms83PqDDZiz5OxKTrNHqxXdy+A93+W8kTWaH403r+WMmoy7cibqWi++hZgzLQ428WKGxdOe+KN99jHOfhq0aDrkbJujazdFF9OnV5f4TN/b5FyXbU3oN5K/0Oq69Roj7Au5gWTv4ILa8/C6kK+u7emzoydh05QXGq5RwHNGj8vJG62/yB1lHzbXj6b4h8zrOWmAo+xjdjhiq39PRqoJ

Steps to reproduce

Create count = ref(0);
Create non-reactive empty array;
Fill the array in onMounted();
Create template, where non-reactive array displays if count is bigger than some value.
This condition must be falsy at the start.
Increase the count to make the condition true and oldVNode is undefined will happens.

What is expected?

I was experimenting with vue's reactive system and trying to achieve behavior where non-reactive dates displays in the HTML when the count becomes bigger than comparedValue.

What is actually happening?

Increasing the count causes an oldVNode is undefined error if the initial count value is bigger than comparedValue at the start.

System Info

Firefox 131, Chrome 130

Any additional comments?

I understand that the way I doing it is not recommended, but the error looks strange.

Metadata

Metadata

Assignees

No one assigned

    Labels

    🔨 p3-minor-bugPriority 3: this fixes a bug, but is an edge case that only affects very specific usage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions