zoukankan      html  css  js  c++  java
  • vue选项卡切换,某个组件缓存数据keep-alive demo

    父组件home如下:
    <template>
      <div class="home">
        <div>
          <button @click="buttonClick(item.name)" v-for="(item) in buttons" :key="item.name">{{item.value}}</button>
        </div>
        <div>
          <keep-alive include="books">
            <component :is="viewFirst"></component>
          </keep-alive>
        </div>
      </div>
    </template>
    <script>
      import books from '../components/books.vue'
      import notebooks from '../components/notebooks.vue'
      import pens from '../components/pens.vue'
      export default {
        name: 'home',
        data () {
          return {
            buttons: [
              {
                name: 'books',
                value: 'books'
              },
              {
                name: 'notebooks',
                value: 'notebooks'
              },
              {
                name: 'pens',
                value: 'pens'
              }
            ],
            componentArray: [
              {
                'books': 'books'
              },
              {
                'notebooks': 'notebooks'
              },
              {
                'pens': 'pens'
              }
            ],
            viewFirst: 'books'
          }
        },
        components: {
          books, notebooks, pens
        },
        methods: {
     
          // tab选项
          buttonClick (name) {
            this.viewFirst = name
          }
        }
      }
    </script>
     
    子组件之一books如下:
    <template>
      <div class="books">
        <button @click="clickOne">点击一</button>
      </div>
    </template>
    <script>
      export default {
        name: 'books',
        data () {
          return {
            clickOneDate: 1
          }
        },
        methods: {
          clickOne () {
            this.clickOneDate = 2
          }
        }
      }
    </script>
     
    说明:以上是三个选项卡,默认是name是books的按钮选中,当然对应的是name是books的组件显示。此处只对books组件里面的数据进行了缓存,里面的clickOneDate数据默认是1,点击后成为2。当再点击notebooks或者pens后,再点击books,这时clickOneDate的值还是2。如果还缓存其他组件,只要在home里面的include的值里面用逗号隔开加上即可,如include="books ,notebooks"。
    另外:动态组件 is 了解下。
    还有:keep-alive的用途还有其他场景,参考官网:https://cn.vuejs.org/v2/api/#keep-alive
    最后:vue路由结合keep-alive相当实用,后续总结。
    分享个人qq群链接:255909991
     
     
  • 相关阅读:
    java_监控工具jvisualvm
    bzoj3667: Rabin-Miller算法
    bzoj3677: [Apio2014]连珠线
    4070: [Apio2015]雅加达的摩天楼
    4069: [Apio2015]巴厘岛的雕塑
    4071: [Apio2015]巴邻旁之桥
    bzoj2653: middle
    1500: [NOI2005]维修数列
    bzoj4262: Sum
    bzoj4540: [Hnoi2016]序列
  • 原文地址:https://www.cnblogs.com/caozhuzi/p/11204630.html
Copyright © 2011-2022 走看看