javascript - React Router 中同一组件的多个路径名

标签 javascript reactjs path react-router url-routing

我对三个不同的路线使用相同的组件:

<Router>
    <Route path="/home" component={Home} />
    <Route path="/users" component={Home} />
    <Route path="/widgets" component={Home} />
</Router>

有没有办法把它结合起来,就像:

<Router>
    <Route path=["/home", "/users", "/widgets"] component={Home} />
</Router>

最佳答案

自react-router v4.4.0-beta.4起,并且在 v5.0.0 中正式发布,您现在可以指定解析为组件的路径数组,例如

<Router>
    <Route path={["/home", "/users", "/widgets"]} component={Home} />
</Router>

数组中的每个路径都是一个正则表达式字符串。

可以找到此方法的文档 here .

React Router v6 更新

React Router v6不再允许将路径数组作为 Route 属性传递。相反,您可以使用 useRoutes (有关文档,请参阅 here)React hook 来实现相同的行为:

import React from "react";
import {
  BrowserRouter as Router,
  useRoutes,
} from "react-router-dom";

const element = <Home />;
const App = () => 
 useRoutes(['/home', '/users', '/widgets'].map(path => ({path, element})));

const AppWrapper = () => (
    <Router>
      <App />
    </Router>
  );

您可以看到此代码工作的扩展示例 here .

这个答案的关键是:

The useRoutes hook is the functional equivalent of <Routes>, but it uses JavaScript objects instead of <Route> elements to define your routes.

关于javascript - React Router 中同一组件的多个路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40541994/

相关文章:

javascript - 如何在 React 上设置具有撤消操作的初始状态?

reactjs - 无法解析模块 'react' 的路径。 (导入/没有-未解决)

node.js - 将新库添加到 Node 中的 PATH

c - 避免为格式化路径分配内存

javascript - 向动态创建的表添加 datatable 属性

javascript - 使用 web-audio-api 的变调器?

javascript - Ext.Ajax.request在jQuery.ajax发送GET时发送OPTIONS请求跨域

javascript - 从 .load() 附加内容

javascript - 在 ReactJS 中呈现已解决或已拒绝的 Promise 值

java - Liferay portlet 和相对路径