Live-Route为啥不能写在Switch里面去?
Closed this issue · 2 comments
其实一直以来我都有一个问题,这个Live-Route组件为啥不能写在Switch里面和正常的Route组件一样呢?而要在Switch里面多加一个Component为空的Route?
@frankqiu0219
Switch 的源码,https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/Switch.js#L39 会拿所有 Switch 内部的 Route 的 path 通过 matchPath 做匹配,如果匹配到任何一个就直接 cloneElement 返回这个 Route 了。
所以如果 LiveRoute 放在 Switch 中的话,就会造成 LiveRoute 在隐藏时被优先匹配到,结果就是 LiveRoute 隐藏什么都没有并且也不会匹配之后的 Route,最后只渲染一个 null
@frankqiu0219
Switch 的源码,https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/Switch.js#L39 会拿所有 Switch 内部的 Route 的 path 通过 matchPath 做匹配,如果匹配到任何一个就直接 cloneElement 返回这个 Route 了。
所以如果 LiveRoute 放在 Switch 中的话,就会造成 LiveRoute 在隐藏时被优先匹配到,结果就是 LiveRoute 隐藏什么都没有并且也不会匹配之后的 Route,最后只渲染一个 null
做开源是不是特别累啊?感觉很多bug 或者 pr之类的,平时上班偶尔也要加下班之类的,我有点想写一个react 的懒加载的组件(用IntersectionObserver)写的,我看了下,好像目前市场上还没有特别好用的这方面的组件, 特来想你资讯下