Reactjs 反应路由器-导航到同一路由会导致重新渲染

Reactjs 反应路由器-导航到同一路由会导致重新渲染,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,嗨,我不确定这是一个期望的行为还是一个bug 这是一个空的create react应用程序示例,带有react路由器dom 版本: “反应”:“^16.13.1” “react dom”:“^16.13.1” “反应路由器dom”:“^5.2.0” “反应脚本”:“3.4.1” 开关下有两条线路部件: /-用于主组件 /触点-用于触点组件 从“React”导入React; 从“react Router dom”导入{Switch,Route,BrowserRouter as Router,L

嗨,我不确定这是一个期望的行为还是一个bug

这是一个空的create react应用程序示例,带有
react路由器dom

版本:

  • “反应”:“^16.13.1”
  • “react dom”:“^16.13.1”
  • “反应路由器dom”:“^5.2.0”
  • “反应脚本”:“3.4.1”
开关下有两条线路
部件:

  • /-用于主组件
  • /触点-用于触点组件
  • 从“React”导入React;
    从“react Router dom”导入{Switch,Route,BrowserRouter as Router,Link};
    类Home扩展了React.PureComponent{
    render(){
    控制台日志(“主渲染”);
    返回主页;
    }
    }
    //const homemo=React.memo(主页);
    //const Home=()=>主页;
    const Contacts=()=>Contacts;
    常量头=()=>{
    console.log(“标题渲染”);
    返回(
    家
    
    联络 ); }; 函数App(){ console.log(“应用程序渲染”); 返回( ); } 导出默认应用程序;
    可用小提琴

    多次单击“主页”链接会显示一条
    主页呈现的消息


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

    我提出了一个相关的Github票证

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


    此设计决策的原因仍然未知。

    您在何处以及如何看到主页链接上的点击,页面正在重新呈现?@AskMen请查看浏览器选项卡左下角的控制台日志
        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;