Javascript React路由器v5-嵌套路由中全局不匹配
我的React应用程序中有两个路由“堆栈”:Javascript React路由器v5-嵌套路由中全局不匹配,javascript,reactjs,typescript,react-router,Javascript,Reactjs,Typescript,React Router,我的React应用程序中有两个路由“堆栈”: 公共(登录、注册、404等-/Login、/Register) 专用(仪表板-/app/*) 当用户登录时,将使用仪表板路由堆栈,其中下一个嵌套路由器将匹配子页面。 当路由不存在时,我想显示来自“公共”堆栈的全局不匹配(404)路由,但当我在路由器末尾有此路由时,将显示空的仪表板路由,而不是设置中的最后一个: App.tsx 返回( (是否已验证?:)}/> ); Dashboard.tsx 导出默认功能仪表板(props:RouteCompo
- 公共(登录、注册、404等-/Login、/Register)
- 专用(仪表板-/app/*)
返回(
(是否已验证?:)}/>
);
Dashboard.tsx
导出默认功能仪表板(props:RouteComponentProps):ReactElement{
返回(
仪表板
);
}
例如,当我访问/foobar
时,我看到组件仪表板的内容,而没有任何其他内容
我试图在仪表板的末尾进行重定向,但这在设计上似乎并不合适:
//仪表板开关末端
} />
//更改未找到的路由
根据文档():
呈现时,它会搜索其子元素以查找路径与当前URL匹配的元素。当它找到一个时,它会渲染它并忽略所有其他的
使用重定向块有助于解决这种情况下的问题。将其添加到仪表板组件:
export default function Dashboard(props: RouteComponentProps): ReactElement {
return (
<div>
<div>Dashboard</div>
<Switch>
<Route path="/" component={Welcome} exact />
<Route path="/create" component={CreateContent} />
<Route path="/manage" component={ManageContent} />
<Route><Redirect to="/404" /></Route>
</Switch>
</div>
);
}
导出默认功能仪表板(props:RouteComponentProps):ReactElement{
返回(
仪表板
);
}
根据文档():
呈现时,它会搜索其子元素以查找路径与当前URL匹配的元素。当它找到一个时,它会渲染它并忽略所有其他的
使用重定向块有助于解决这种情况下的问题。将其添加到仪表板组件:
export default function Dashboard(props: RouteComponentProps): ReactElement {
return (
<div>
<div>Dashboard</div>
<Switch>
<Route path="/" component={Welcome} exact />
<Route path="/create" component={CreateContent} />
<Route path="/manage" component={ManageContent} />
<Route><Redirect to="/404" /></Route>
</Switch>
</div>
);
}
导出默认功能仪表板(props:RouteComponentProps):ReactElement{
返回(
仪表板
);
}
我这样做了。这是唯一的办法吗德西姆斯,这是唯一的办法。如果一个控制流经过某个路由,它将永远不会选择另一个没有重定向的路由。一个证明链接:我做到了。这是唯一的办法吗德西姆斯,这是唯一的办法。如果一个控制流经过某个路由,它将永远不会选择另一个没有重定向的路由。证明链接: