目前学习 react 的时候突然发现路由缓存这个需求 react router 并不能给出一个很好的解决方案,而且 react 的文档及其分散和版本差异...... 我想知道现在的流行解决方案是什么。如果可以的话,有 dalao 能给个 react 的讨论群吗
1
ookkxw 2019-05-07 09:33:45 +08:00 via iPhone
啥叫 路由缓存?类似 vue 的 keep alive ?这个的话没有办法,react 的机制问题,非要做的话可以 display none 再配合路由管理,
|
2
wly19960911 OP @ookkxw #1 看来是措词错误,难怪这么久没人回答。
display none 的话,某些路由下还可能异常吧? 如果按照你所说的,那我可能需要针对 /user/( user 的 list ) , /user/1 这两个页面全部归一个 component 管理? |
3
ookkxw 2019-05-07 10:21:21 +08:00 via iPhone
@wly19960911 看你怎么设计了,我现在用的是 display none 的方案,还有一个思路是吧所有子组件的 state 通过 context 缓存 ,展示的时候再付值,不过这个改造工程比较大
|
4
wly19960911 OP @ookkxw #3 context,指的是父级的 component 的 state 吗,这个的确也可以,我也考虑过这个方案。
但是要完全还原现场有些瑕疵,其实也就是滚动条什么的比较麻烦,当然考虑不需要完全还原下这个是最好的解决方案了。 关于 display none 我有个问题,根据 url 切换到当前页面的话,难道得自己去读 url 然后做一套解析,而不是用 react router 直接调用,还是说 route 切换的时候阻止了 unmount ?因为我看见有人的解决方案是通过阻止 unmount 来处理这个问题。但是总感觉事情复杂了,也没有人能请教下主流的方案,所以才来问问 |
5
ookkxw 2019-05-07 11:51:08 +08:00 via iPhone 1
@wly19960911 react route 有这个 API 可以在不使用 组件的情况下解析 返回结果是个 match 或者 null
|
6
wly19960911 OP @ookkxw 那我再研究研究,谢谢指教。
|