react-router 的组件化一直以来引人非议,但这却非常迎合 react 的技术思想 。这种很别扭的 router 写法,让很多人都希望写 状态式的 或者直接把 开发文件路径 当成路由(创建工程文件就是创建路由)。
组件化一切
react 早期的 router 都是状态化的…
但是后面是官方宣扬 component 思想之后才改变的。他们喜欢把组件分 UI Component 和 Container Component。前者很好理解,就是我们日常写的 UI 组件,99%的普通开发者基本都是在写 UI Component 。而负责数据和业务逻辑的后者应该只有库/框架 开发者在写。react-redux 如此,react-router 也是如此。
但是达成这种思想的根本核心还是 react 中数据流在组件中是单向流动的特性。这个特性从 react 面世之初就带这着一个 facebook 中永远取消不了的未读信息这个 bug 让人熟记,而且也是 react 确保数据来源唯一性的重要手段。但又约束了众多第三方库中开发思维。
作为一个 router 管理库,其核心就是把一系列 状态 管理在一个地方,方便开发者在想用的时候用。但是想要把 状态 灵活的插入指定的组件而不依靠第三方数据流管理库的话:加个父组件嵌套是最理想的。