如何在同一应用程序内的不同迷你应用程序之间共享React Router

问题描述:

我正在尝试在Angular应用程序中做出反应。我目前使用ngReact加载我的角度应用程序中的反应组件。如何在同一应用程序内的不同迷你应用程序之间共享React Router

我使用react-router (2.8.1)作为我的应用程序的一部分。我创建了另一个部分,并希望使用react-router。不幸的是,我遇到了问题,唯一能工作并被识别的路由器是我访问的第一台路由器。这是我观察到的。

  1. 这两个路由器加载时,我的应用程序加载主页。我怎么知道?我向路由器对象和控制台添加了一个属性。在路由器创建的文件中记录属性。
  2. 如果我先访问路由器A,则路由器A正常工作!当我使用路由器B访问该页面时,路由器B似乎不被识别并且不起作用,我得到错误“警告:[react-router]位置”/ RouteB“与任何路由都不匹配”。这solution did not work
  3. 我是否需要将我的路由器重构为一个大文件,其中包含我使用react-router的所有路由?这似乎是我需要重构一切,或者我错过了一些东西。
  4. 我对后端路由更加熟悉,特别是使用express.Router创建实例并且不共享路由器。

这里是我的两个路由器的片段,用于我的应用的不同部分。

路由器A:

import React from 'react'; 
import {Router, Route, browserHistory, IndexRoute} from 'react-router'; 

/* Note, additional import statements for components */ 

const Routes =() => (
    <Router history={browserHistory}> 
    <Route path="/RouteA"> 
     <IndexRoute component={UserIndex} /> 
     <Route path=":RouteAId"> 
     <IndexRoute component={index} /> 
     <Route path="user" component={user} /> 
     <Route path="profile" component={profile} /> 
     <Route path="preview" component={previewUpdate} /> 
     <Route path="interest/:interestId/resume" component={CoverLetterRoute} /> 
     </Route> 
     <Route path="*" component={NoMatch} /> 
    </Route> 
    </Router> 
); 

export default Routes; 

路由器B:

import React from 'react'; 
import {Router, Route, browserHistory, IndexRoute} from 'react-router'; 
import Main from '../components/Main'; 

const Routes =() => (
    <Router history={browserHistory}> 
    <Route path="/onboarding" component={Main} /> 
    </Router> 
); 

export default Routes; 

是否有可能有两个单独的路由器也是这样吗?我是否需要将所有路线加载到一个Router?如果您需要更多信息,请发表评论。

使用单个客户端应用程序与单个路由器通过使用不同的路由。这将允许您更轻松地共享代码,并从应用程序的一部分无缝链接到另一部分。您必须设置您的服务器才能为/ users和/ onboarding提供相同的脚本。

var routes = (
     <Route handler={App}> 
     <Route path="https://*.com/users/welcome" handler={Welcome} /> 
     <Route path="/onboarding"> 
      {/* onboarding routes here */} 
     </Route> 
     </Route> 
    ); 

第2个选项(不推荐,但是):使用两个不同的入口点,每个入口点运行自己的路由器。这会隔离您的每个应用程序,并且无需往返服务器,您将无法从一个“应用程序”转换到另一个应用程序。您必须设置您的webpack和服务器,以便为/ users和/ onboarding提供不同的(条目)脚本。而为了链接到其他应用程序,您必须使用正常<a href>而不是<Link to>