Reactjs 用TypeScript到达路由器
我有一些代码看起来像这样Reactjs 用TypeScript到达路由器,reactjs,typescript,reach-router,Reactjs,Typescript,Reach Router,我有一些代码看起来像这样 从“React”导入React; 从'@reach/Router'导入{Router,Redirect}; 从“/screens/Posts”导入帖子; 函数App(){ 返回( ); } defaultprop在重定向上表示无效。是否有方法响应键入组件的子级 看起来可能有一种方法可以通过如下方式实现: 但我对TypeScript还是相当陌生,所以我不确定这在实践中究竟会起到什么作用。你正在与之混合 重定向用于重写URL。在您的示例中,似乎希望将用户从“/”重定向到“
从“React”导入React;
从'@reach/Router'导入{Router,Redirect};
从“/screens/Posts”导入帖子;
函数App(){
返回(
);
}
default
prop在重定向上表示无效。是否有方法响应键入组件的子级
看起来可能有一种方法可以通过如下方式实现:
但我对TypeScript还是相当陌生,所以我不确定这在实践中究竟会起到什么作用。你正在与之混合
重定向用于重写URL。在您的示例中,似乎希望将用户从“/”重定向到“/posts”,因此在本例中使用重定向是正确的
默认路由用于在用户提供未知路径时显示组件
因此,您可能会创建一个PageNotFound组件,并像这样使用它:
<Router>
<Redirect from="/" to="posts" noThrow />
<Posts path="posts" />
<PageNotFound default />
</Router>
interface Props {
default: boolean
}
const PageNotFound = (props: Props) => {
return <div>Page not found</div>;
}
<Router>
...
<PageNotFound default={true} />
</Router>
由于您使用的是Typescript,PageNotFound组件的道具中必须有一个布尔默认属性,如下所示:
<Router>
<Redirect from="/" to="posts" noThrow />
<Posts path="posts" />
<PageNotFound default />
</Router>
interface Props {
default: boolean
}
const PageNotFound = (props: Props) => {
return <div>Page not found</div>;
}
<Router>
...
<PageNotFound default={true} />
</Router>
界面道具{
默认值:布尔值
}
const PageNotFound=(道具:道具)=>{
未找到返回页;
}
然后像这样使用它:
<Router>
<Redirect from="/" to="posts" noThrow />
<Posts path="posts" />
<PageNotFound default />
</Router>
interface Props {
default: boolean
}
const PageNotFound = (props: Props) => {
return <div>Page not found</div>;
}
<Router>
...
<PageNotFound default={true} />
</Router>
...
出现错误的原因可能是?属性不是组件的子级。在您的示例中,重定向是路由器的子级,默认值是重定向的属性。