vue重用机制:

也叫惰性机制 , vue使用v-if进行标签的切换时, 如果将要销毁和将要创建标签时同一种标签, 那么vue不会销毁和新建,而是把原有的标签重置属性和样式后直接拿来用, 可能造成输入框内容被保留下来

怎么避免vue的重用机制?

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