问题描述
我想防止每个组件都安装在每次渲染上,我使用的是 React Router,
我将 component={ComponentName}
的加载更改为 render{() => < ComponentName />}
,但没有成功。
这似乎是自然的行为,但我想一定有办法改变它
这是我的 App.js
export default function App() {
return (
<div className = "App" >
<Provider store={store}>
<Route path="/" render={() => <Header />} />
<Route exact path="/" render={() => <ShowSplashWindow />} />
<Route path="/countries" render={() => <Countries />} />
<Route path="/createactivity" render={() => <CreateActivity />} />
</Provider>
</div>
);
}
这是我的路线路径:
<nav className={style.nav}>
<Link to="/" className={style.subNav}>
<p>Init</p>
</Link>
<Link to="/countries" className={style.subNav}>
<p>Countries</p>
</Link>
<Link to="/createactivity" className={style.subNav}>
<p>Create Activities</p>
</Link>
</nav>
我在互联网上搜索过,它说渲染方法可以解决问题,但在我的情况下却没有
拉斐尔
解决方法
使用 Switch
中的 react-router-dom
组件。 documentation 说:
这与仅使用一堆 Route
有何不同? Switch
的独特之处在于它专门呈现一条路线。相比之下,与位置匹配的每个 Route
都包含渲染。
export default function App() {
return (
<div className = "App" >
<Provider store={store}>
<Route path="/" render={() => <Header />} />
<Switch>
<Route exact path="/" render={() => <ShowSplashWindow />} />
<Route path="/countries" render={() => <Countries />} />
<Route path="/createactivity" render={() => <CreateActivity />} />
</Switch>
</Provider>
</div>
);
}