博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue keep-alive保存状态
阅读量:2240 次
发布时间:2019-05-09

本文共 1115 字,大约阅读时间需要 3 分钟。

使用vue的keep-alive属性设置页面保存状态

应项目需求,开发一个类似app的移动端H5项目,有tabbar标签切换,并需要保存当前状态。之前对vue学习不够全面,并不了解keep-alive属性,再查询各种资料,终于看到了keep-alive,简单好用,不禁感叹vue真是强大。

keep-alive定义

keep-alive是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

原理

包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和transition 相似,keep-alive是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

prop

include: 字符串或正则表达式。只有匹配的组件会被缓存。

exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。

常见用法

  • 用法——组件
// 组件export default {  name: 'test-keep-alive',  data () {    return {        includedComponents: "test-keep-alive"    }  }}
  • 用法——结合router
    结合router,缓存部分页面
    使用$route.meta的keepAlive属性:

需要在router中设置router的元信息meta

//...router.jsexport default new Router({  routes: [    {      path: '/',      name: 'Hello',      component: Hello,      meta: {        keepAlive: false // 不需要缓存      }    },    {      path: '/page1',      name: 'Page1',      component: Page1,      meta: {        keepAlive: true // 需要被缓存      }    }  ]})

效果

如图:这个是vux 插件,效果正是如此,状态保留在内存中,防止重复渲染。

那么问题来了,使用keep-alive缓存也会有弊端,会导致有些页面有些数据改变的时候,页面数据需要重新渲染,这时候可以配合watch 监听来解决。

转载地址:http://ozhbb.baihongyu.com/

你可能感兴趣的文章
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>