Version
2.3.0
Reproduction link
https://jsfiddle.net/maggiehe/xovqtqd8/
Steps to reproduce
Use the following template with this.currentIndex = 1, then check this._vnode.
<div><div>foo</div><div v-for="i in 3" v-if="i===currentIndex" :key="i">{{i}}</div></div>
What is expected?
The template's childNodes will be compiled into: ["Element", "Element", "Comment", "Comment"]
What is actually happening?
Vue(>=2.3.0) compiles the template's childNodes into [ "Element", "Element", "Text" ], while [email protected] performs correctly.
The bug will lead to this error: The client-side rendered virtual DOM tree is not matching server-rendered content.