• vue keep-alive缓存组件


    我们创建一个vue项目 引入一下element ui
    然后在src下的components 下应该会有一个HelloWorld.vue 如果没有 那就自己写一个
    HelloWorld.vue 参考代码如下

    <template>
      <div class="hello">
          <el-tabs v-model="activeName" type="border-card">
              <el-tab-pane label="系统配置信息" name="systemConfig">
                  <span>系统配置信息span>
              el-tab-pane>
              <el-tab-pane label="模块开关" name="moduleSwitch">
                  <span>模块开关span>
              el-tab-pane>
              <el-tab-pane label="操作项配置" name="operationBoxConfig">
                  <span>操作项配置span>
              el-tab-pane>
          el-tabs>
      div>
    template>
    
    <script>
    export default {
      name: 'HelloWorld',
      data() {
        return {
          activeName:'systemConfig',
        }
      }
    }
    script>
    
    
    <style scoped>
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    然后我们编写 App.vue代码

    
    <template>
      <div class="containers">
          <el-button @click = "setGuaz">{{ guaz?"关闭":"开启" }}el-button>
          <hello-world v-if = "guaz"/>
      div>
    template>
    
    <script>
    import HelloWorld from '@/components/HelloWorld'
    export default {
      data () {
        return {
          guaz: true
        }
      },
       components:{
          HelloWorld
        },
      methods: {
        setGuaz() {
          this.guaz = !this.guaz;
        },
      },
      mounted () {
      }
    }
    script>
    
    <style lang="scss">
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    我们可以看到一个简单小案例 我们点击按键 下面的控件就会出现和消失
    在这里插入图片描述
    在这里插入图片描述
    但我们会发现一个问题 当我们 切换到 第二和第三个时 在点击关闭 然后在打开 选择的就会变回第一个

    因为 v-if 条件不成立 组件就被从DOM树上干掉了 在点击开启 组件就会被初始化 而初始化就会选中第一个

    那我我们修改一下App.vue代码

    
    <template>
      <div class="containers">
          <el-button @click = "setGuaz">{{ guaz?"关闭":"开启" }}</el-button>
          <keep-alive>
              <hello-world v-if = "guaz"/>
          </keep-alive>
      </div>
    </template>
    
    <script>
    import HelloWorld from '@/components/HelloWorld'
    export default {
      data () {
        return {
          guaz: true
        }
      },
       components:{
          HelloWorld
        },
      methods: {
        setGuaz() {
          this.guaz = !this.guaz;
        },
      },
      mounted () {
      }
    }
    </script>
    
    <style lang="scss">
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    我们可以看到 我们给HelloWorld 组件 套上了一个keep-alive标签
    然后我们在点击第二和第三个 然后在从上面点关闭 再开启 会发现选择的还是我们上次选择的那个 因为keep-alive会缓存组件 再次出现时会保留之前的操作结果

  • 相关阅读:
    mysql 索引优化
    Java网络编程:构建高性能的TCP/IP服务
    蓝牙耳机仓设计的单芯片解决方案
    Git使用经验总结3-删除远端提交记录
    java计算机毕业设计喜枫日料店自助点餐系统源码+lw文档+系统+数据库
    大数据_数据中台建设的成熟度评估模型
    SourceTree 使用
    教程更新 | RK3568驱动指南第六篇-平台总线
    Ubuntu 20.04源码安装git 2.35.1
    AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.06.05-2024.06.10
  • 原文地址:https://blog.csdn.net/weixin_45966674/article/details/126325823