具有多个布局的反应路线,重新渲染?

时间:2018-06-07 12:28:58

标签: reactjs react-router-dom

我是新人的反应。我希望我的应用程序具有多个布局,用于具有反应路由器的不同页面。以下代码可在https://gist.github.com/avinmathew/e82fe7e757b20cb337d5219e0ab8dc2c

中找到
logging.handler

我的问题是,在使用相同布局更改页面后,是否会重新呈现布局(例如从/ bar到/ bar2)?

2 个答案:

答案 0 :(得分:1)

是。由于Component是布局支柱并且它发生变化(在Bar1Bar2之间),因此它将触发新的渲染。 React使用虚拟DOM仅将实际更改传递给真实DOM。

答案 1 :(得分:1)

是的,这将在导航时重新渲染您的布局。这样做的原因是render'作为一个孩子的功能' AKA' render prop' (这是在React中使用的设计模式,react-router-dom implements)在导航到该路径时被调用。

此外 - Switch呈现第一个孩子或匹配该位置。

试试这个:

import { Router, Route } from 'react-router-dom';
import { createMemoryHistory } from 'history';

const history = createMemoryHistory();

<Router history={history}>
  <Route component={MainLayout}>
    <Route exact path="/foo" component={Foo} />
  </Route>
  <Route component={AltLayout}>
    <Route exact path="/bar" component={Bar} />
    <Route exact path="/bar2" component={Bar2} />
  </Route>
</Router>