React Router 6 + TypeScript:Route组件index属性类型报错求助
React Router 6 + TypeScript 解决
<Route> index属性类型错误问题 问题重现
使用如下代码时出现TypeScript报错:
<Routes> <Route index> <h1>Here</h1> </Route> </Routes>
报错信息:Type 'true' is not assignable to type 'false'.ts(2322)
原因分析
React Router 6中,index属性的作用是标记父路由的默认子路由,它不能作为独立的顶级路由存在。TypeScript的类型定义严格遵循这一设计:当路由直接放在<Routes>下(无父路由)时,index属性只能为false或不声明,因为顶级路由必须指定明确的path,无法作为默认子路由。
解决方案
方案1:根路由默认页面用path="/"替代index
如果这是网站根路径的默认页面,直接给路由指定path="/"即可:
<Routes> <Route path="/"> <h1>Here</h1> </Route> </Routes>
方案2:嵌套场景下将index路由放在父路由的children中
如果是嵌套路由的默认子路由,必须把它嵌套在带path的父路由内部:
<Routes> <Route path="/dashboard" element={<DashboardLayout />}> <Route index> <h1>Dashboard Home</h1> </Route> <Route path="settings" element={<SettingsPage />} /> </Route> </Routes>
内容的提问来源于stack exchange,提问作者Abraham
相关产品推荐
相关产品推荐

