当前位置: 首页 > 知识库问答 >
问题:

响应路由器开关行为

赵健柏
2023-03-14

react路由器domversion:4.1.1)

我已经设置了工作路线,但我有点不明白为什么

index.js

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

import App from './components/App.jsx';
import FridgePage from './components/FridgePage.jsx';

ReactDOM.render(
    <HashRouter>
        <Switch>
            <Route exact path="/" component={App} />
            <Route path="/fridge" component={FridgePage} />
        </Switch>
    </HashRouter>,
    document.getElementById('root')
)

一个pp.jsx

import Header from './Header.jsx';
import {Link} from 'react-router-dom';

export default class App extends React.Component {
    render() {
        console.log(this.props);
        return (
            <div>
                <h1>Herbnew</h1>
                <Link to="fridge">Fridge</Link>
                {this.props.children}
            </div>
        );
    }
}

FridgePage.jsx

import React from 'react';

export default class FridgePage extends React.Component {
    render() {
        return (
            <div>
                <h1>Fridge</h1>
                You finally found the fridge!
            </div>
        );
    }
}

我以前用一个div来包装路线,而不是开关。在这种情况下,我看到呈现了应用程序,并尝试单击冰箱链接,但什么都没有发生(没有呈现冰箱页面),并且没有错误输出到控制台。

据我所知,Switch所做的唯一一件事是专门呈现它匹配的第一个路由,而忽略它的常见问题是同时呈现两个页面。如果我的"/"路线是准确的,那么即使没有交换机,冰箱也应该是唯一匹配的路线,对吗?为什么它根本不渲染?


共有2个答案

伯英武
2023-03-14

FridgePage无法呈现,因为中缺少“/”。我想一定是这样

谷梁智
2023-03-14

exact返回完全匹配的任意数量的路由。

例如:

<Switch>
  <Route exact path="/animals" component={Animals} />
  <Route path="/animals/fish" component={Fish} />
  <Route component={Missing} />
</Switch>
<Route path="/animals" component={Order} />

如果缺少的组件不在

使用exact,“/animals”路线不会捕获包含“/animals”的所有路线,例如“animals/fish”。

如果不使用exact,“/animals/fish”路线还将返回“animals/fish/cod”和“/animals/fish/鲑鱼”等的fish组件。

通常,如果您不使用exact,您将使用通配符,因此不会返回随机页面。

 类似资料:
  • 我正在使用react路由器v4和redux,如果用户未登录,我想使用私有和受保护的路由重定向。 我有一个路由组件: 它是这样实现的: 这是私人路线: 传递prop的最佳方式是什么,如果我连接Routes组件并从那里传递是否可以,或者应该从其他地方传递,或者连接需要它的每个组件并从那里读取?此外,这种方法如何处理嵌套路由,如?谢谢

  • 我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误

  • 在我的存储区被调度之后,我调用,它将我发送到正确的视图,但我无法访问查询参数。我的其余代码可以在https://github.com/crh225/hotreactasp/tree/master/src/hotreactasp/content找到,谢谢!

  • 考虑以下事项: 我有一个应用模板,一个HeaderTemboard,和参数化的路由集与相同的处理程序(在应用模板)。我希望在没有找到东西的时候能够服务404路线。例如, /CA/SanFrancisco应该由区域查找和处理,而 /SanFranciscoz应该是404。 下面是我如何快速测试路线的。 问题是 /SanFranciscoz总是由区域页面处理,但我希望它是404。此外,如果我向第一个路

  • 我刚开始学习React,在Asp.NETMVC中实现React浏览器路由器在页面之间导航时遇到了困难。 我使用了相同的结构,没有应用反应asp.netMVC,它工作正常。 当我点击链接时,它不会产生任何错误,只是在页面甚至网络活动中没有任何变化。 我用MVC应用的代码如下: --index.js-- --App.js-- --Nav.app.js-- --routingComponent.js--

  • 我在最新的应用程序中使用react router和redux,我面临着一些与基于当前url参数和查询所需状态更改相关的问题。 基本上,我有一个组件,需要在每次url更改时更新它的状态。状态是通过redux的道具传递给decorator的,就像这样 目前,我正在使用componentWillReceiveProps生命周期方法来响应来自react-router的url更改,因为当this.props