13.1 基本用法

keep-alive的使用只需要在动态组件的最外层添加标签即可。

  1. <div id="app">
  2. <button @click="changeTabs('child1')">child1</button>
  3. <button @click="changeTabs('child2')">child2</button>
  4. <keep-alive>
  5. <component :is="chooseTabs">
  6. </component>
  7. </keep-alive>
  8. </div>
  1. var child1 = {
  2. template: '<div><button @click="add">add</button><p>{{num}}</p></div>',
  3. data() {
  4. return {
  5. num: 1
  6. }
  7. },
  8. methods: {
  9. add() {
  10. this.num++
  11. }
  12. },
  13. }
  14. var child2 = {
  15. template: '<div>child2</div>'
  16. }
  17. var vm = new Vue({
  18. el: '#app',
  19. components: {
  20. child1,
  21. child2,
  22. },
  23. data() {
  24. return {
  25. chooseTabs: 'child1',
  26. }
  27. },
  28. methods: {
  29. changeTabs(tab) {
  30. this.chooseTabs = tab;
  31. }
  32. }
  33. })

简单的结果如下,动态组件在child1,child2之间来回切换,当第二次切到child1时,child1保留着原来的数据状态,num = 5

13.1 基本用法 - 图1