V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wly19960911
V2EX  ›  问与答

目前 react 流行的路由缓存策略是什么 ?

  •  
  •   wly19960911 · 2019-05-06 19:57:07 +08:00 · 4549 次点击
    这是一个创建于 2022 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前学习 react 的时候突然发现路由缓存这个需求 react router 并不能给出一个很好的解决方案,而且 react 的文档及其分散和版本差异...... 我想知道现在的流行解决方案是什么。如果可以的话,有 dalao 能给个 react 的讨论群吗

    6 条回复    2019-05-07 12:50:15 +08:00
    ookkxw
        1
    ookkxw  
       2019-05-07 09:33:45 +08:00 via iPhone
    啥叫 路由缓存?类似 vue 的 keep alive ?这个的话没有办法,react 的机制问题,非要做的话可以 display none 再配合路由管理,
    wly19960911
        2
    wly19960911  
    OP
       2019-05-07 09:50:00 +08:00
    @ookkxw #1 看来是措词错误,难怪这么久没人回答。

    display none 的话,某些路由下还可能异常吧?

    如果按照你所说的,那我可能需要针对 /user/( user 的 list ) , /user/1 这两个页面全部归一个 component 管理?
    ookkxw
        3
    ookkxw  
       2019-05-07 10:21:21 +08:00 via iPhone
    @wly19960911 看你怎么设计了,我现在用的是 display none 的方案,还有一个思路是吧所有子组件的 state 通过 context 缓存 ,展示的时候再付值,不过这个改造工程比较大
    wly19960911
        4
    wly19960911  
    OP
       2019-05-07 10:36:52 +08:00
    @ookkxw #3 context,指的是父级的 component 的 state 吗,这个的确也可以,我也考虑过这个方案。

    但是要完全还原现场有些瑕疵,其实也就是滚动条什么的比较麻烦,当然考虑不需要完全还原下这个是最好的解决方案了。

    关于 display none 我有个问题,根据 url 切换到当前页面的话,难道得自己去读 url 然后做一套解析,而不是用 react router 直接调用,还是说 route 切换的时候阻止了 unmount ?因为我看见有人的解决方案是通过阻止 unmount 来处理这个问题。但是总感觉事情复杂了,也没有人能请教下主流的方案,所以才来问问
    ookkxw
        5
    ookkxw  
       2019-05-07 11:51:08 +08:00 via iPhone   ❤️ 1
    @wly19960911 react route 有这个 API 可以在不使用 组件的情况下解析 返回结果是个 match 或者 null
    wly19960911
        6
    wly19960911  
    OP
       2019-05-07 12:50:15 +08:00 via Android
    @ookkxw 那我再研究研究,谢谢指教。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5502 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.