【问题标题】:React Router - Navigating to same route results in re-renderReact Router - 导航到相同的路由会导致重新渲染
【发布时间】:2020-11-21 13:50:04
【问题描述】:

您好,我不确定这是期望的行为还是错误。

这是一个空的 create-react-app 示例,带有 react-router-dom

版本:

  • “反应”:“^16.13.1”,
  • "react-dom": "^16.13.1",
  • "react-router-dom": "^5.2.0",
  • “反应脚本”:“3.4.1”

Switch 组件下有两条路由:

  1. / - 用于 Home 组件
  2. /contacts - 用于联系人组件
    import React from "react";
    import { Switch, Route, BrowserRouter as Router, Link } from "react-router-dom";
    
    class Home extends React.PureComponent {
      render() {
        console.log("Home rendered");
        return <h1>Homepage</h1>;
      }
    }
    
    //const HomeMemo = React.memo(Home);
    //const Home = () => <h1>Homepage</h1>;
    const Contacts = () => <h1>Contacts</h1>;
    
    const Header = () => {
      console.log("Header Render");
      return (
        <header className="App-header">
          <Link to="/">Home</Link>
          <br />
          <Link to="/contacts">Contacts</Link>
        </header>
      );
    };
    
    function App() {
      console.log("App Render");
      return (
        <div className="App">
          <Router>
            <Header />
            <Switch>
              <Route exact path="/" component={Home} />
              <Route exact path="/contacts" component={Contacts} />
            </Switch>
          </Router>
        </div>
      );
    }
    
    export default App;

小提琴可用here

多次单击主页链接会生成Home rendered 消息。

我的假设是,如果我们已经在同一条路线上,它就不会尝试重新渲染?

【问题讨论】:

  • 您在哪里以及如何看到点击主页链接,页面正在重新呈现?
  • @AskMen 查看浏览器选项卡左下方的控制台日志

标签: reactjs react-router react-router-dom


【解决方案1】:

我已经提出了一个相关的 Github 票 here

一位社区成员告诉我这是按设计

这个设计决定的原因仍然未知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2017-05-17
    • 2017-09-21
    • 2017-03-10
    • 2022-12-17
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多