reactjs - 如何默认为基于 URL 参数的路由

标签 reactjs react-router

我有一个路由设置,如果只给出 1 个参数,即/:id,我希望路由器始终重定向到/:id/overview。

例如,如果用户转到/hello,我希望他们被重定向到/hello/overview。

我试过这样做:

<Switch>
  <Route exact path="/" component={NoParam} />
  <Redirect from="/:section" to="/:section/overview" />
  <Route exact path="/:section/:pageName" component={GeneralOverviewPage} />   
</Switch>

这会导致无限重新渲染。我不确定如何实现此重定向,非常感谢任何帮助。谢谢。

编辑=======

现在尝试这样做:

const GeneralOverviewPage: FC<RouteComponentProps<GeneralOverviewPageProps>> = (
  props
) => {
  console.log(props);
  return !props.match.params.pageName ? (
    <Redirect to={props.match.params.section + '/overview'} />
  ) : (
    <h1>{props.match.params.pageName}</h1>
  );
};

export default GeneralOverviewPage;

<Route path="/:section" component={GeneralOverviewPage} />
      <Route path="/:section/:pageName" component={GeneralOverviewPage} />

这意味着/hello 现在正在重定向到/hello/hello/overview....

最佳答案

这将帮助您理解!

import React from 'react';
import { Switch, Route, Redirect } from 'react-router-dom'

const App = () => {

    return (
        <Switch>
            <Route exact path="/" render={
                () => console.log("Hi")
            } />
            <Redirect exact from="/:section" to="/:section/overview" render={
                () => console.log("Hi 1")
            } />
            <Route exact path="/:section/:pageName" render={
                () => console.log("Hi 2")
            } />
        </Switch>
    )
}

export default App;

关于reactjs - 如何默认为基于 URL 参数的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64155809/

相关文章:

reactjs - 有没有办法通过使用一些库将静态 HTML 转换为 React 组件

react-router - 如何记住 react 路由器中的用户选择?

javascript - 我需要点击两次按钮来显示组件

reactjs - 如何强制服务器端提供路由

javascript - React.js 与 Node.js Rest API

javascript - react 结合不同的包装器

reactjs - 显示网页之前获取外部数据的标准方法(2021 年 9 月)

reactjs - React Router v4 - 重定向不适用于 Switch

reactjs - 未捕获的不变违规 : ReactDOM. render():无效的组件元素

javascript - React - 未捕获的类型错误 : Cannot read property 'func' of undefined