vue根据条件渲染会尽可能的复用之前的dom框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
</head>
<body>
<div id="root">
<div v-if="show">
用户名 <input>
</div>
<div v-else>
邮箱名 <input>
</div>
</div>
<script>
var vm = new Vue({
el: '#root',
data() {
return {
show:false
}
},
})
</script>
</body>
</html>
同样存在一个input输入框,当切换show的状态时邮箱名显示为用户名,但是input框中的值并没有清空,造成这种情况的原因是因为vue会尽可能的复用dom元素来提高效率,对于这种情况可以增加一个key值来进行区分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
</head>
<body>
<div id="root">
<div v-if="show">
用户名 <input key="name">
</div>
<div v-else>
邮箱名 <input key="email">
</div>
</div>
<script>
var vm = new Vue({
el: '#root',
data() {
return {
show:false
}
},
})
</script>
</body>
</html>
上述情况就不会存在了,祝好