1、概述
Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。
key解决上述问题之外的情景:这两个元素是完全独立的,不要复用它们。
2、示例
<!DOCTYPE html> <html lang="zh"> <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>vue中使用key管理可复用的元素</title> </head> <body> <div id="root"> <template v-if="loginType === 'username'"> <label>Username</label> <input placeholder="Enter your username" key="username-input"> </template> <template v-else> <label>Email</label> <input placeholder="Enter your email address" key="email-input"> </template> <button @click="toggleLoginType">Toggle login type</button> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script type="text/javascript"> var vm = new Vue({ el: '#root', data: { loginType: 'username' }, methods: { toggleLoginType: function() { return this.loginType = this.loginType === 'username' ? 'email' : 'username' } } }); </script> </body> </html>
每次切换时,输入框都将被重新渲染。