【发布时间】:2019-11-20 03:39:45
【问题描述】:
有没有一种方法可以只隐藏 React Router 中某些路由的页眉?我现在的问题是我的App 组件呈现了我的Main 组件,其中包含我的BrowserRouter,而我的Header 呈现在我的App 组件中,所以我无法根据路线路径。
这里有一些代码:
App.js
import React from 'react';
import {BrowserRouter} from 'react-router-dom';
import Main from './Main';
import Header from './Header';
import Footer from './Footer';
const App = () => (
<BrowserRouter>
<Header/>
<Main/>
<Footer/>
</BrowserRouter>
);
export default App;
Main.js
import React from 'react';
import {Route, Switch} from 'react-router-dom';
import Home from './Home';
import Login from './Login';
const Main = () => (
<main>
<Switch>
<Route exact path='/' component={Home}/>
<Route exact path='/login' component={Login}/>
</Switch>
</main>
);
export default Main;
在这个应用程序中,我想隐藏登录页面的页眉和页脚。
【问题讨论】:
-
您可以使用 Context/Provider/Consumer 来执行此操作,或者您可以更改您的逻辑并将页眉和页脚作为主页的子页面,而不是登录页面。您也可以使用专门针对带有 mobx 的 UI 的商店来做到这一点。
-
@kemicofa 如果我的页眉和页脚是主页的子页面而不是登录页面,它们不会在导航到另一个也有页眉和页脚的页面时重新呈现吗?
-
是的,你是对的(但不是高性能且最简单的解决方案)。但是,如果您希望保留当前设置,请查看reactjs.org/docs/context.html(推荐)或github.com/mobxjs/mobx-react。他们都可以解决这个问题。您最终可以使用 refs,但这是反模式,最好远离。
标签: reactjs react-router react-router-dom react-dom