我一直在寻找与react和redux配合得很好的路由器,但我找不到任何符合我对完美路由系统想象的东西。
一般来说,我讨厌最常用的路由解决方案(例如react-router)是所有路由都被定义为反应组件。这不符合我想要使用的架构,如下所示:应用程序分为不同的模块。每个模块定义它使用的路由和路由处理程序,例如:
function setupModule({ addRoute, changeView }) {
function showFooView() {
return (dispatch) => {
dispatch(changeView(ComponentFoo));
};
}
addRoute("/foo", showFooView);
}
现在当有人访问/foo
路由时,应该呈现<ComponentFoo/>
。
该方法的问题在于我必须使用changeView
视图调度ComponentFoo
操作并将其保留在存储中,以便我的Application组件知道它应该呈现哪个视图。这意味着保持商店中的功能,这通常是不推荐的。
你能看到我用任何方式使用描述的路由系统并且不破坏redux规则吗?