【问题标题】:react router changes url but not navigating to page反应路由器更改网址但不导航到页面
【发布时间】:2020-06-09 04:15:49
【问题描述】:

我在更改页面以响应 react-router-dom 时遇到问题。这是我的路由器:-

import { Route, Switch, BrowserRouter } from 'react-router-dom';
import HomePage from '../pages/grocery';
import Profile from '../pages/profile';
import CheckoutPage from '../pages/checkout';
export default function Routes(props) {
  return (
      <BrowserRouter>
        <Switch>
          <Route path="/" name="Home" component={HomePage} exact />
          <Route path="/profile" name="Profile" component={Profile} />
          <Route path="/checkout" name="Checkout" component={CheckoutPage} />
        </Switch>
    </BrowserRouter>

  );
}

这是我的链接标签

<Link to="/profile">Profile</Link>

【问题讨论】:

    标签: javascript reactjs react-router-dom


    【解决方案1】:

    这里的问题是第二个 Route 元素也有一个“/”,第一个将访问任何以“/”开头的元素。 如何解决这个问题? 使用 Route 您可以将“精确”放在路径之前,因此它只会访问该特定路线,无论之后发生什么。 示例:

    <Route exact path="/" name="Home" component={HomePage} />
    <Route exact path="/profile" name="Profile" component={Profile} />
    <Route exact path="/checkout" name="Checkout" component={CheckoutPage} />
    

    这样您在访问其他页面或组件时不会遇到问题。

    【讨论】:

    • 这是一个很好的观点,尽管您还应该提到,如果在不使用exact 的情况下颠倒了组件的顺序,那也可以工作,因为它匹配Switch 中的第一条路线,因为添加 exact 可能会导致与任何组件都不匹配的路径不渲染任何内容 - 而保持正常状态将允许任何未知路由渲染 Home 组件
    • 没错,顺序也很重要,就像你把 HomePage 路由放在最后一样,它也会像最后要检查的项目一样工作
    猜你喜欢
    • 2018-04-01
    • 2021-08-06
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2019-07-24
    • 2018-07-28
    相关资源
    最近更新 更多