【发布时间】:2021-11-10 10:47:57
【问题描述】:
在 react router 6 中,在 javascript 中,这是可行的:
<BrowserRouter>
<Routes>
<Route path="/" element={<AppFrame />}>
<Route path="product" element={<ProductView />} />
</Route>
<Route path="*" element={<div>Nothing here</div>} />
</Routes>
</BrowserRouter>
它在我有 {children} 的 AppFrame 内显示 ProductView。
我试图在 Typescript 和 React Router 6 中做同样的事情,但它根本不起作用——它只是显示 AppFrame。我需要做更多的事情来添加 {children} 标记吗?
我的页面布局组件:
import React from 'react';
type Props = {
children?: React.ReactNode
};
const AppFrame = ({ children }: Props) => {
return (
<div>
AppFrame
{children}
</div>
)
};
export default AppFrame;
我的演示组件:
import React from 'react';
import AppFrame from '../../Components/Layout/AppFrame';
const ProductView = () => {
return (
<div>
Product View
</div>
)
};
export default ProductView;
我的路线:
<BrowserRouter>
<Routes>
<Route path="/" element={<AppFrame />}>
<Route path="product" element={<ProductView />} />
</Route>
<Route path="*" element={<div>Nothing here</div>} />
</Routes>
</BrowserRouter>
【问题讨论】:
-
Javascript 中的第一个示例不应该,也不应该工作。在这两个 JS/TS 中,您都需要为嵌套的
Route渲染一个Outlet组件。