我有一个示例应用程序,每当我加载根URL时,我是否在检查cookie是否存在,如果有cookie,则加载主页组件,否则,我需要重定向到外部URL。
我能够重定向,但是每当我重定向时,就会显示页眉和页脚组件。由于我在页眉和页脚之间调用路由组件。因此,我如何只显示文本重定向 没有页眉和页脚组件
<BrowserRouter>
<Header />
<div className="content">
<Route path="/aboutus" component={AboutUs} />
<Route path="/contact" component={Contact} />
<Route path="/" render ={() => {
// checking the cookie exists
if(cookieExists){
return (<HomePage />)
}else{
axios.get("api/userLoggedIn")
.then(res => {
// the url is an external url [https://www.examplelogin.com]
window.location.assign(res.data);
})
.catch(err => console.log("error in api", err))
return <div>Redirecting</div>;
}
}}
/>
</div>
<Footer />
</BrowserRouter>
答案 0 :(得分:1)
我想您可以在'div'标签上使用以下样式,如下所示:
const contact = {zIndex: 9999, backgroundColor: "#fff", top: 0, right: 0, left: 0, bottom: 0, position: "absolute"};
const wrapper = {position: "relative"};
<BrowserRouter>
<div style={wrapper}>
<Header />
<div className="content">
<Route path="/aboutus" component={AboutUs} />
<Route path="/contact" component={Contact} />
<Route path="/" render ={() => {
// checking the cookie exists
if (cookieExists){
return (<HomePage />)
} else {
axios.get("api/userLoggedIn")
.then(res => {
// the url is an external url [https://www.examplelogin.com]
window.location.assign(res.data);
})
.catch(err => console.log("error in api", err))
return <div style={contact}>Redirecting</div>;
}
}}/>
</div>
</div>
</BrowserRouter>
已为“重定向” div赋予了zIndex较高的堆栈顺序,以及其他必要的样式以白色背景覆盖整个屏幕。因此它应该显示在周围所有其他元素的前面。此外,还需要一个带有“ position:relative”的外部“ wrapper” div来使其工作。
希望这会有所帮助。
答案 1 :(得分:0)
您需要将<Header>
和<Footer>
包装到页面AboutUs
,Contact
和HomePage
中。
没有其他方法可以在父级上有条件地渲染<Header>
和<Footer>
,除非您希望在父级上维持一个状态,该状态控制是否显示页眉和页脚,这不是理想的解决方案。 / p>
只需将它们包装到您的每个组件中-AboutUs
,Contact
和HomePage
。