javascript - react 路由器中的相对路由

标签 javascript reactjs routes react-router

有人知道如何创建以 '/popup-image-:id' 结尾的路径吗?我有一个网站,每个图像都可以在任何页面的弹出窗口中打开。因此,如果我无法实现“/popup-image-:id”,我必须将网站中的每条路线加倍才能放置在其中。我希望避免冗余和脆弱性。 我当前的路由:

<Router history={browserHistory}>
   <Route path="/" component={Base}>
      <Route path="profile" component={Profile}>
         <Route path="popup-image-:id" component={Full_Piture} />
      </Route>
      <Route path="feed" component={Feed_List}>
         <Route path="popup-image-:id" component={Full_Piture} />
      </Route>
      <Route path="user-:id" component={User_Page}>
         <Route path="popup-image-:id" component={Full_Piture} />
      </Route>      
   </Route>
</Router>

正如你所看到的,我不得不生成大量重复的代码。如果我可以写类似 <Route path="*/popup-image-:id" component={Full_Piture} /> 的东西这将是更加干净和可靠的代码

最佳答案

是家长<Route>还应该匹配吗?如果不是,您应该能够使用 ** 语法。

<Route path="/**/popup-image-:id" component={Full_Picture} />

如果父<Route>也应该匹配,您可以创建一个 <RouteWithPopup>返回 <Route> 的组件其中有 <Route path='popup-image-:id'>作为它的 child 。

const RouteWithPopup = (props) => {
  return (
    <Route {...props}>
      <Route path="popup-image-:id" component={Full_Picture} />
    </Route>
  )
}

然后你可以将你的路由配置变成:

<Router history={browserHistory}>
  <Route path="/" component={Base}>
    <RouteWithPopup path="profile" component={Profile} />
    <RouteWithPopup path="feed" component={Feed_List} />
    <RouteWithPopup path="user-:id" component={User_Page} />
  </Route>
</Router>

关于javascript - react 路由器中的相对路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40686886/

相关文章:

javascript - Cufon 悬停和更改字体语法

javascript - React fetch polyfill 在移动设备上不起作用

javascript - 使用 Jest/Enzyme 和 Axios 测试 React 组件

javascript - 复制动态元素大小

html - 将子组件作为新页面加载,而不是作为父组件主体的一部分

c# - ASP.NET MVC 自定义 Controller 目录

angular - 如何使用 Angular 路由将产品添加到购物车?

javascript - 如何添加输入字段中的值并使用 jQuery 中的结果更新另一个字段?

javascript - 检测以 Angular 传递给 $compile 的字符串是否可编译的最佳方法?

javascript - 如果 Typescript 中不为 null,则声明环境变量