首页 > 解决方案 > 如何始终在反应路由器中显示默认组件

问题描述

我想在每条路线中始终显示标题页。如何做到这一点。我希望 props.history 可以在该标题组件中访问,这样如果我点击任何东西,我就可以使用 props.history.push(); 导航到其他页面;

     <BrowserRouter>

    <div>
      <Header/> // I want history in this component
        <Route exact path="/" component={HomePage} />
        <Route  path="/page1" component={Page1} />
        <Route path="/page2" component={Page2} />

    </div>
</BrowserRouter>

);

标签: javascriptreactjsreact-router-v4react-router-dom

解决方案


使用 Switch 一次渲染一条路线。如果您想要 Header 组件中的历史记录,请使用 react-router 中的 withRouter。(历史将作为道具传递给标题组件)

https://reacttraining.com/react-router/web/api/withRouter

/* header component */
import { withRouter } from 'react-router'
export default withRouter(Header)

/* router component */
<BrowserRouter>
    <div>
        <Header/> // I want history in this component
        <Switch>
            <Route exact path="/" component={HomePage} />
            <Route  path="/Picklistscreen" component={PickListArea} />
            <Route path="/scanarea" component={ScanArea} />
        </Switch>
    </div>
</BrowserRouter>

推荐阅读