在根问题上反应嵌套路由

时间:2018-06-28 20:35:57

标签: javascript reactjs redux react-router

当我尝试在根路由上嵌套路由时,我遇到了问题。 我有3条“主要”路线:

<Switch>
  <Route path="/" component={Home} />
  <Route path="/login" component={Login} />
  <Route path="/logout" component={Logout} />
</Switch>

在我的Home组件上,有一个像这样的嵌套路由器:

<div>
  <Route path="/" render={() => <div>Home</div>} />
  <Route path="/test" render={() => <div>Test Route</div>} />
</div>

Home组件的侧边栏HOC包含链接。

<Sidebar>
  <Link to="/">Home</Link>
  <Link to="/test">Test</Link>
  <Link to="/logout">Logout</Link>
</Sidebar>

在“我的根”组件上单击Im并单击Test链接后,嵌套路由器上的路由将更改为正确的“测试”组件。每当我进入登录和/或注销路径时,它都会尝试在Home组件的嵌套路由器中显示该消息

有什么想法吗?

编辑:我已经尝试了提供@Tholle的示例。不幸的是,它仍然无法按照我想要的方式工作。请参阅我制作的CodeSandBox,以重现我的问题。

2 个答案:

答案 0 :(得分:0)

def cost_calculator(x, wings, **kwargs): 组件确保仅呈现匹配的第一个Switch。要停止始终渲染Route,可以将exact道具设置为<Route path="/" component={Home} />

示例(CodeSandbox

true

答案 1 :(得分:0)

您的链接需要指向with tempfile.NamedTemporaryFile(suffix='.csv', prefix=os.path.basename(__file__)) as tf: tf_directory = os.path.dirname(tf.name) ,嵌套路由需要处理"/home/testX"。此外,您还需要在根中为"/home/testX"设置一条路由。我不认为链接组件的作用域仅限于调用它的路由。意味着链接到"/home"就是假设这是基本路线。但是,test1的渲染实际上发生在home组件中。

换句话说:为了到达"/test1",您必须首先获取home组件(/home/test1)进行渲染,然后可以为test1(/home)绘制路线。

这里是codesandbox

这里是一个提供更多灵活性codesandbox的示例。这将需要重定向“ /”,因为它取决于所使用的路径,并且必须是“ / home”而不是“ /”。

希望这会有所帮助。希望我一切都好。