Mag*_*nus 1 reactjs react-hooks
我有一个如下所示的布局组件:
export const Layout = (props) => {
return (
<div>
<MenuBar />
{props.children}
<Footer />
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
...我想使用这个 Layout 组件来为不同的页面呈现内容,如下所示:
export const App = () => {
return (
<div>
<Router>
<Layout>
<Switch>
<Route exact path="/">
<PageHome />
</Route>
<Route path="/about">
<PageAbout />
</Route>
</Switch>
<Layout />
</Router>
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
现在我遇到的问题是,每次路由更改时,props.children 值都会更改,因此整个 Layout 组件(包括 MenuBar 和 Footer)都会重新呈现以及页面内容。所以我的问题是:
在Layout本身必须重新渲染,因为它有新的孩子,但是你可以防止MenuBar并Footer通过创建它们的组件从重新渲染React.memo:
const MenuBar = React.memo(function MyComponent(props) {
/* render using props, it won't re rerender unless props change */
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |