技术咨询,各位大佬们,现在 react 开发项目,有什么类似 Vue 中的 keep-alive 方案吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
17681880207
V2EX    React

技术咨询,各位大佬们,现在 react 开发项目,有什么类似 Vue 中的 keep-alive 方案吗?

  •  
  •   17681880207 2024-01-09 10:40:46 +08:00 2284 次点击
    这是一个创建于 641 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主要还是使用 Vue 项目,对 React 理解的比较肤浅。自己也在网上看了各种方案,相对而言都是比较小众,各有各的问题。看到最后,比较好的似乎是 react-activation 组件。

    11 条回复    2024-01-15 10:47:52 +08:00
    zhuxc
        1
    zhuxc  
       2024-01-09 11:45:49 +08:00
    写个组件包一下,不展示的隐藏掉就可以了
    codehz
        3
    codehz  
       2024-01-09 17:55:15 +08:00
    可以用 experimental 里的 unstable_Activity
    yuheCai
        4
    yuheCai  
       2024-01-10 11:34:31 +08:00
    插眼。
    我是自己用样式隐藏的方案自己搞了一个,但是总觉得不优雅
    shunia
        5
    shunia  
       2024-01-10 13:39:26 +08:00
    啊,不是自己写样式吗? visibility 就可以了吧,还可以配合做动画。

    不知道 vue 的 keep-alive 能不能自动优化被缓存的组件的重渲染,如果可以的话那确实算是一个卖点。
    17681880207
        6
    17681880207  
    OP
       2024-01-10 16:27:23 +08:00
    @shunia 应该是结合路由的 keep-alive 。 自己写的话,好像没什么好的思路。就是要实现管理页面标签卡的功能,打开的页面会有一个标签卡,然后切换再点击标签卡回来会显示之前的内容(比如之前填写了一半的表单)。
    17681880207
        7
    17681880207  
    OP
       2024-01-10 16:28:00 +08:00
    @zhuxc @yuheCai 应该是结合路由的 keep-alive 。 自己写的话,好像没什么好的思路。就是要实现管理页面标签卡的功能,打开的页面会有一个标签卡,然后切换再点击标签卡回来会显示之前的内容(比如之前填写了一半的表单)。
    vizards
        8
    vizards  
       2024-01-10 18:51:52 +08:00 via iPhone
    目前(截止 2024.1.10 ) react 还没有真正生产可用的 keep-alive 方案

    替代选择:
    1. react@experimental 中提供的 unstable_Offscreen ,要求 React 使用 experimental 版本
    2. 基于 Suspense 实现的 keep-alive ,比如极简代码实现的 react-freeze ,要求 React 17+
    3. 其他介入 React 渲染流程的 hack 实现,比如你已经搜到的

    结合路由的方式基本都是手动劫持 Outlet 组件的渲染,使之可以不被 unmount ,转而使用一个新的属性比如 mode 控制子路由组件是否渲染
    17681880207
        9
    17681880207  
    OP
       2024-01-10 22:01:33 +08:00
    @vizards 感谢大佬的指点!:)
    herozzm
        10
    herozzm  
       2024-01-13 16:56:40 +08:00
    实际上 vue 的 keep-alive 不好用
    17681880207
        11
    17681880207  
    OP
       2024-01-15 10:47:52 +08:00
    @herozzm 实际上 vue 的 keep-alive 好用的不得了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     855 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 20:33 PVG 04:33 LAX 13:33 JFK 16:33
    Do have faith in what you're oing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86