vue重用机制:
也叫惰性机制 , vue使用v-if进行标签的切换时, 如果将要销毁和将要创建标签时同一种标签, 那么vue不会销毁和新建,而是把原有的标签重置属性和样式后直接拿来用, 可能造成输入框内容被保留下来
怎么避免vue的重用机制?
在需要创建和销毁的标签上分别添加key属性, key值相同则重用, key值不同则不重用, 默认不加key属性,值是相同的
<body><script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script><div id='myApp'><button @click="btnClick">切换登录方式</button><button @click="()=>{login=!login}">事件函数可以用匿名函数直接实现</button><div v-if="login"><input type="text" placeholder="请输入账号信息"><input key="pas" type="password" placeholder="请输入密码信息"></div><div v-else><input type="text" placeholder="请输入手机号信息"><input key="code" type="text" placeholder="请输入验证码信息"><textarea name="" id="" cols="30" rows="10"></textarea></div><!-- 以上使用v-if控制标签切换时,发现标签并没有严格执行创建和销毁(因为切换后输入框的数据还在,说明输入框并未销毁), 由于vue的重用机制造成vue重用机制: 也叫惰性机制 , vue使用v-if进行标签的切换时, 如果将要销毁和将要创建标签时同一种标签, 那么vue不会销毁和新建,而是把原有的标签重置属性和样式后直接拿来用, 可能造成输入框内容被保留下来怎么避免vue的重用机制?在需要创建和销毁的标签上分别添加key属性, key值相同则重用, key值不同则不重用, 默认不加key属性,值是相同的--><!-- v-for循环时,建议添加属性key,保证key值都不同, 避免重用机制造成渲染异常 --><div v-for="item,i in arr" :key="i">{{item.age}}</div></div><script>new Vue({el: '#myApp',data: {login: true,arr: [{age:10},{age:20},{age:30},{age:20}]},methods: {btnClick(){this.login = !this.login;}}})</script></body>
