Vue在渲染元素时,出于效率考虑,会尽可能地复用已有的元素而非重新渲染,例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="./vue.js"></script> </head> <body> <div id="app"> <template v-if="type==='name'"> <label>用户名:</label> <input type="text" placeholder="输入用户名"> </template> <template v-else> <label>邮箱</label> <input type="text" placeholder="输入邮箱"> </template> <button @click="handleToggleClick">切换输入类型</button> </div> <script> //input和label会被复用 不信你看控制台Elements 在用户名input输入内容后,点击button,会发现input的内容没有改变!!!!! var app=new Vue({ el:'#app', data:{ type:'name' }, methods:{ handleToggleClick:function(){ this.type=this.type==='name'?'mail':'name'; } } }) </script> </body> </html>
注意::
可以使用添加key属性,取消元素的复用。(key值必须是唯一的!!!!!!!!)