### Version 2.3.0 ### Reproduction link [https://jsfiddle.net/maggiehe/xovqtqd8/](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 Vue@2.2.6 performs correctly. --- The bug will lead to this error: The client-side rendered virtual DOM tree is not matching server-rendered content. <!-- generated by vue-issues. DO NOT REMOVE -->