如何在React中实现keep-alive?

本文探讨在React中实现类似keep-alive的功能,以保持组件状态并避免重复渲染。通过分析源码,解释了如何使用该库以及其工作原理,包括组件的缓存和渲染过程。警告不推荐使用可能导致数据驱动断层的现有库,并预告下周将分享无断层方案。
摘要由CSDN通过智能技术生成

写在开头

  • 不推荐你使用本文这个库,这个库会造成数据驱动断层(即你缓存后,切换回来,确实可以看到跟之前一样的dom,但是数据驱动此时失效了),下周我会写另外一个可以不断层的库解析

现代框架的本质其实还是Dom操作,今天看到一句话特别喜欢,不要给自己设限,到最后,大多数的技术本质是相同的。

  • 例如后端用到的Kafka , redis , sql事务写入 ,Nginx负载均衡算法,diff算法,GRPC,Pb 协议的序列化和反序列化,锁等等,都可以在前端被类似的大量复用逻辑,即便jsNode.js都是单线程的

认真看完本文与源码,你会收获不少东西

框架谁优谁劣,就像Web技术的开发效率与Native开发的用户体验一样谁也不好一言而论谁高谁低,不过可以确定的是,web技术已经越来越接近Native端体验了

  • 作者曾经是一位跨平台桌面端开发的前端工程师,由于是即时通讯应用,项目性能要求很高。于是苦寻名医,为了达到想要的性能,最终选定了非常冷门的几种优化方案拼凑在一起

  • 过程虽然非常曲折,但是市面上能用的方案都用到了,尝试过了,但是后面发现,极致的优化,并不是1+1=2,要考虑业务的场景,因为一旦优化方案多了,他们之间的技术出发点,考虑的点可能会冲突。

  • 这也是前端需要架构师的原因,开发重型应用如果前端有了一位架构师,那么会少走很多弯路。

  • 后端也是如此

Vue.js中的keep-alive使用:

Vue.js中,尤大大是这样定义的:

keep-alive主要用于保留组件状态或避免重新渲染

基础使用:

<keep-alive>
  <component :is="view"></component>
</keep-alive>

大概思路:

切换也是非常平滑,没有任何的闪屏(由于这里不支持gif图,可以看我的原文:https://segmentfault.com/a/1190000020413804)

特别提示:这里每个组件,下面还有一个1000行的列表哦~ 切换也是秒级

图看完了,开始梳理源码

第一步,初次渲染缓存

import {Provider , KeepAlive} from 'react-component-keepalive';

将需要缓存渲染的组件包裹,并且给一个name属性即可

例如:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值