【发布时间】:2021-10-21 06:33:09
【问题描述】:
我目前正在开发一个 React 站点,我有一个自定义的 HeaderBar 组件,我想在上面显示当前页面标题。我计划只从路由器更新一个状态变量来更改标题。但是,可以理解的是,这会导致“重新渲染过多”错误。
这是我当前的代码:
function App() {
const [pageTitle, setPageTitle] = useState("")
return (
<div>
<Router>
<HeaderBar siteTitle="My Website Name" pageTitle={pageTitle} />
<Switch>
<Route path="/login">
{setPageTitle("Login")}
<h1>Login Page</h1>
</Route>
<Route path="/main">
{setPageTitle("Main")}
<h1>Main Page</h1>
</Route>
<Route path="/about">
{setPageTitle("About")}
<h1>About Page</h1>
</Route>
</Switch>
</Router>
</div>
);
}
显然,我可以将 HeaderBar 声明移动到每条路线中,但这对我来说似乎是一个骇人听闻的解决方案。
有没有更好的方法来解决这个问题?
【问题讨论】:
-
创建布局组件并在路由中传递组件标题
标签: reactjs react-router use-state