reactjs - React Router - 导航到相同的路由会导致重新渲染
问题描述
嗨,我不确定这是期望的行为还是错误。
这是一个空的 create-react-app 示例react-router-dom
版本:
- “反应”:“^16.13.1”,
- “反应域”:“^16.13.1”,
- "react-router-dom": "^5.2.0",
- “反应脚本”:“3.4.1”
组件下有两条路由Switch
:
- / - 用于 Home 组件
- /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;
小提琴在这里可用
多次单击主页链接会生成一条Home rendered
消息。
我的假设是,如果我们已经在同一条路线上,它不会尝试重新渲染?
解决方案
推荐阅读
- python-3.x - python获取给定时区和日期时间的unix时间戳
- php - Laravel 7,缺少 [Route: /xxxxx] 错误所需的参数
- flutter - 如何使标签指示器在颤动中变小?
- python - 在 Django 中调用 python 函数并在同一页面上显示结果
- javascript - 为什么父母不听 Angular 上的孩子?
- vue.js - 如何解决 Vue js 中的绑定问题
- swift - Firebase 实时数据库定价与查询
- amazon-dynamodb - DynamoDB - 根据条件放置项目
- memory-management - 不可变字符串和克隆
- asp.net-core - 如果自定义参数无效,IdentityServer4 拒绝令牌请求