zoukankan      html  css  js  c++  java
  • vue中的keep-alive

    本文转载于:https://blog.csdn.net/xum222222/article/details/80322532

    转载仅供个人日后学习

    https://www.cnblogs.com/jinzhenzong/p/7885643.html

    keep-alive的作用主要是在组件切换时,保存组件的状态,防止重复渲染引发性能问题。比如:常见的列表页与详情页,当我们在列表页通过滚动鼠标寻找到自己感兴趣的标题时,点进去进入详情页,当浏览完详情页后返回到列表页,此时我们希望返回的列表页不是重新渲染后的列表页,而是我们之前滚动到的位置,keep-alive 就可以帮助我们缓存列表页的状态,实现上述效果。keep-alive起到一个缓存作用,用来保存页面的状态(包括数据、操作等)。

    demo实践,感受keep-alive的作用
      demo中定义了两个组件,Page1和Page2。并通过路由实现了两个组件之间的切换。在page1页面的输入框中输入一些内容后,切换到page2页面,再从page2重新切换到page1时,通过keep-alive可以实现输入框中的内容保持不变。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>keep-alive</title>
    </head>
    <body>
      <div id="app">
        <router-link to="/page1">page1</router-link>
        <router-link to="/page2">page2</router-link>
        <keep-alive>
          <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <router-view v-if="!$route.meta.keepAlive"></router-view>
      </div>
      <script src="https://unpkg.com/vue"></script>
      <script src="https://unpkg.com/vue-router"></script>
      <script>
      const Page1 = Vue.extend({
          template: `<div class="page1">
            <h1>page1</h1>
            <input type="text" />
          </div>
          `,
        })
      const Page2 = Vue.extend({
        template: `<div class="page2">
          <h1>page2</h1>
        </div>
        `,
      })
    
      const routes = [
        {
          path: '/page1',
          component: Page1,
          meta: {
            keepAlive: true,
          }
        },
        {
          path: '/page2',
          component: Page2,
          meta: {
            keepAlive: false,
          }
        },
      ]
    
      const router = new VueRouter({
        routes,
      })
    
      const app = new Vue({
        router
      }).$mount('#app')
      </script>
    </body>
    </html>
    ---------------------
    • 代码copy到编辑器中保存为.html文件,用浏览器打开观察结果。

    上述demo中,通过在路由时,为组件Page1Page2设置meta的keepAlive状态来控制组件是否需要缓存。

  • 相关阅读:
    Android 70道面试题汇总不再愁面试
    TOMCAT用Https替换Http的方法
    Struts2+Spring3+Hibernate3配置全过程
    javac 无效标签
    hibernate
    数据库命令行启动
    Tomcat检测程序
    SQL
    Unsupported major.minor version 49.0的错误解决
    ImportError: No module named pysqlite2
  • 原文地址:https://www.cnblogs.com/curo0119/p/10722544.html
Copyright © 2011-2022 走看看