当前位置: 首页 > 面试题库 >

React Router在重新加载时起作用,但在单击链接时不起作用

刁英朗
2023-03-14
问题内容

我已经设置了react-router版本4
的React。当我直接在浏览器中输入URL时,路由有效,但是当我单击链接时,URL在浏览器上发生了变化(例如http:// localhost:8080
/ categories
),但是内容不会更新(但是如果我刷新,它会更新)。

以下是我的设置:

Routes.js 设置如下:

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

// Components
import Categories from './containers/videos/Categories';
import Videos from './containers/videos/Videos';
import Home from './components/Home';

const routes = () => (
  <Switch>
    <Route exact path="/" component={Home}/>
    <Route path="/videos" component={Videos}/>
    <Route path="/categories" component={Categories}/>
  </Switch>
);

export default routes;

我在 Nav.js 中使用的链接如下:

<Link to="/videos">Videos</Link>
<Link to="/categories">Categories</Link>

App.js 如下:

import React from 'react';
import './app.scss';
import Routes from './../routes';
import Nav from './Nav';

class AppComponent extends React.Component {

  render() {
    return (
      <div className="index">
        <Nav />
        <div className="container">
          <Routes />
        </div>
      </div>
    );
  }
}

AppComponent.defaultProps = {
};

export default AppComponent;

问题答案:

包装您的组件withRouter应该为您完成工作。withRouter使用Link或其他任何Router道具但不Router props直接从Route或从那里获得道具的组件需要Parent Component

路由器道具可在组件调用时使用

<Route component={App}/>

要么

<Route render={(props) => <App {...props}/>}/>

或者如果您将Links路由器标记的直接子代放置为

<Router>
     <Link path="/">Home</Link>
</Router>

如果您希望将子内容作为组件写入Router中,例如

<Router>
     <App/>
</Router>

Router道具对App不可用,因此,您可以使用类似

<Router>
     <Route component={App}/>
</Router>

但是,当您要为高度嵌套的组件提供Router道具时,withRouter会派上用场。检查此解决方案

import {withRouter} from 'react-router'

class AppComponent extends React.Component {

  render() {
    return (
      <div className="index">
        <Nav />
        <div className="container">
          <Routes />
        </div>
      </div>
    );
  }
}

AppComponent.defaultProps = {
};

export default withRouter(AppComponent);


 类似资料:
  • 我试图在单击按钮或菜单项时将用户重定向到另一个页面。不幸的是,onClick函数只在运行时起作用,在实际单击时不起作用,我不知道为什么。 这是我的功能 如果我调用函数时没有这样的回调 它在运行时调用,而不是在实际单击按钮或菜单项时调用。被调用的函数没有任何问题(我尝试过在单击时console.log一些东西,但没有结果)。 我错过了什么或做错了什么?

  • 所以我想给我的按钮添加一些样式。因此,我创建了一个从QPushButton派生的类。我已经重写了mousePressEvent和mouseReleaseEvent函数。到目前为止还好。一切都按预期工作,按钮在按下和释放时会改变颜色。当我在MainWindow中尝试实现on_button_clicked()时,问题就出现了。就是行不通。

  • 注意:下面是对类似帖子/问题的编辑/修订,试图更好地识别我的问题/问题,并提供更好的代码示例来演示我的问题。 添加注意:代码示例已修改为包括工作代码。 我在同一个spring reactive应用程序中的两台路由器中有两个endpoint。第一个(/v2/demopojo)似乎可以正常工作。第二个(/v2/democlient/demopojo),使用WebClient委托给/v2/demopoj

  • 问题内容: 我的代码如下所示。我的课有一个可选的var BottleLayer有一个方法。 这段代码使用可选的链接,可以在我的类中很好地编译: 现在,我想构造一个使用相同代码的闭包: 但是我得到一个编译错误: 找不到成员“ jiggle” 作为解决方法,我可以强制展开 或者我当然可以使用成熟的可选绑定,但是我宁愿不使用。我确实认识到可选链接只是语法糖,但是很难看出为什么这种语法糖会因为在处理程序中

  • 问题内容: 我在我的角度web应用程序。 当我在浏览器中键入内容时,它会重定向到我期望的位置,但是当我单击时,它不会重定向,而是停留在url上。 我的控制台没有错误,我也不知道为什么。 当不再工作时 我在这里看到了一个类似的问题AngularUI-Router$urlRouterProvider。我尝试了答案,但它仍然对我不起作用。 这是我的coffeescript代码: 问题答案: 先前的解决方

  • 我已经可以切换到iframe,然后点击图像选择[如图1所示]然后不能点击div-预览按钮[如图2-蓝色按钮]这是“应用和关闭”。 知道吗?