【发布时间】:2020-07-11 01:33:58
【问题描述】:
据我了解,单击 React Router 的 <Link /> 组件应该会导致 <Router /> 中的所有内容重新渲染。
但是,在这个使用 React Router DOM v5.2 的简单示例应用程序中,情况似乎并非如此:
import React from "react";
import "./styles.css";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
const Foo = () => {
console.log("rendered");
return null;
};
export default function App() {
return (
<Router>
<Foo />
<div className="App">
<Link to="/">Home</Link>
<br />
<Link to="/foo">Foo</Link>
<Route path="/" exact>
<p>Home</p>
</Route>
<Route path="/foo">
<p>Foo</p>
</Route>
</div>
</Router>
);
}
https://codesandbox.io/s/vigorous-water-2fuxt?file=/src/App.js
我错过了什么?
【问题讨论】:
-
为什么没有
Route组件注册路径? -
我会添加它,看看它是否有影响
-
Route是路由的关键组件。它们与Link的to属性相关,以在指定路径呈现内容。 -
嗯,我现在明白了。我想我期待
<Router>的所有孩子重新渲染,但似乎只有<Route>的孩子重新渲染。而且,似乎并非所有<Route>s 都重新渲染 -
你能澄清一下“期望路由器的所有孩子重新渲染”是什么意思吗?您的意思是当您转到与特定
Route内的特定组件/jsx 相关的路径/foo时,其他路由/页面也会呈现?如果您在/foo上,您希望/单独重新渲染?
标签: reactjs react-router