React Router-嵌套路由不起作用
我的目标是让http:// mydomain /
route1渲染React组件Component1和http:// mydomain /
route2渲染Component2。因此,我认为编写如下的路由是很自然的:
<Route name="route1" handler={Component1}> <Route name="route2" handler={Component2} />
</Route>
<DefaultRoute name="home" handler={Home} />
</Route>
http:// mydomain / route1可以正常工作,但http:// mydomain /
route2却呈现Component1。
然后,我阅读了此问题并将路由更改为以下内容:
<Route name="route1" path="route1" handler={Component1} /> <Route name="route2" path="route1/route2" handler={Component2} />
<DefaultRoute name="home" handler={Home} />
</Route>
这两个HTTP:// MYDOMAIN /路径2和HTTP:// MYDOMAIN
/路径2为目前预计的工作。但是,我不明白为什么前一个在我看来更合逻辑,更整洁时不起作用。
嵌套语法适用于“ /”和“ route1”,那么为什么不使用“ route1”和“ route2”呢?
回答:
问题在于,在嵌套路由中,路由器将尝试安装与层次结构匹配的所有组件。当您要将组件彼此嵌套在一起时,这是最好的选择。但是,如果您希望两条单独的路线来匹配不同的组件,则它们将需要成为自己的路线。
<Route handler={App}> <Route path="route1" handler={Component1} />
<Route path="/route1/route2" handler={Component2} />
<DefaultRoute name="home" handler={Home} />
</Route>
Component2
将App
在URL 为时(在之中)挂载/route1/route2
。
如果您想窝的组件,你将需要添加<RouteHandler/>
到Component1
,因此会使Component2
它里面。
之所以起作用,是因为嵌套组件与嵌套URL不同,并且可以由路由器单独处理。有时,您希望组件嵌套但不一定嵌套URL,反之亦然。
以上是 React Router-嵌套路由不起作用 的全部内容, 来源链接: utcz.com/qa/430846.html