到达路由器,渲染嵌套的路由组件

阿米尔·穆萨维(Amir-Mousavi)

在React应用程序中使用Reach路由器(带有打字稿)。

使用嵌套的路由,我陷入了如何将嵌套的组件呈现为单独的(在单独的视图中)组件而不是作为父组件底部的子组件的问题。

代码如下:

App.tsx
--------
<Router>
  <Customers path="/customers">
    <PDFExport path=":id" />
  </Customers>
  <Users path="/users">
    <PDFExport path=":id" />
  </Users>
</Router>

Customers.tsx
--------------
 interface IProps extends RouteComponentProps {children: any;}

const Customers: React.FC<IProps> = props => {
 const[customers,setCustomers]=React.useSate(); // somehow fetch custmers
  return (
     <>
       {customers.map(c=>(
           <Button as={Link} to={`${c.id}`} />)
       }
      // on click the url chages to i.g. `/customers/123`
      // but I do not get navigated to the PDFExport component
      // but I have to render that here as child like follow
       {props.childern}
      // in this case I will have the content of PDFExport component at the bottom of Customers component
    </>
  );
}

PDFExport.tsx
-------------
interface IProps extends RouteComponentProps {
  id?: string;
}
const PDFExport: React.FC<IProps> = props => {
  return <div>{props.id}</div>;
  // this will contain the comon form I want to use for different parents
};

之所以将PDFExport用作嵌套,是因为我想将其重用于不同的路由,例如:/users/:id/customers/:id

有什么方法可以将嵌套路线呈现为单独的组件,而不是作为子组件。

zhuber

您可以尝试如下操作:

const Empty = ({ children }) => {
  return children;
}

<Router>
  <Empty path="/customers">
    <Customers path="/" />
    <PDFExport path=":id" />
  </Empty>
  <Empty path="/users">
    <Users path="/" />
    <PDFExport path=":id" />
  </Empty>
</Router>

当您使用/路径定义嵌套组件时,它将用作该父级的索引组件。由于父级为空,因此将显示该索引组件。导航到后:id,您将在父级中获得该组件,该父级也是空组件。

请参阅“索引路由”下的内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular UI路由器嵌套视图

来自分类Dev

流星铁路由器布局渲染

来自分类Dev

递归ui路由器嵌套视图

来自分类Dev

反应路由器不渲染组件

来自分类Dev

反应路由器不显示组件

来自分类Dev

反应路由器动态路由不渲染组件

来自分类Dev

流星路由器的嵌套动态模板

来自分类Dev

嵌套反应路由器

来自分类Dev

复制组件在“反应路由器”中?

来自分类Dev

与盖茨比中的到达路由器动态生成的链接的嵌套路由

来自分类Dev

到达路由器中同一组件的多个路径名

来自分类Dev

当超级组件的状态改变时,如何防止重新渲染路由器内部的组件?

来自分类Dev

状态超时后的组件路由器

来自分类Dev

反应路由器更改路径但不渲染组件

来自分类Dev

了解嵌套的反应路由器

来自分类Dev

单击的组件的路由器出口内的渲染路线

来自分类Dev

反应路由器嵌套

来自分类Dev

反应路由器渲染导致卸载

来自分类Dev

Nativescript + Angular,如何在嵌套页面路由器出口中到达子路由?

来自分类Dev

到达路由器未显示匹配网址的正确组件

来自分类Dev

流星铁路由器布局渲染

来自分类Dev

角度ui路由器嵌套视图

来自分类Dev

递归ui路由器嵌套视图

来自分类Dev

反应路由器不渲染组件

来自分类Dev

Vue路由器。无法挂载组件

来自分类Dev

子组件中的路由器链接

来自分类Dev

React 路由器组件无法渲染自己的子组件?

来自分类Dev

支持路由 hoc 中反应路由器的渲染道具

来自分类Dev

路由器找不到组件