当我尝试在根路由上嵌套路由时,我遇到了问题。 我有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,以重现我的问题。
答案 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”而不是“ /”。
希望这会有所帮助。希望我一切都好。