【发布时间】:2020-03-25 13:25:42
【问题描述】:
我创建了一个带有标题和简单授权的简单 react.js,所以如果用户登录(用户对象在 localstorage 中设置) - 导航栏显示,如果没有 - 导航栏隐藏。代码如下:
#App.js
import React from 'react';
import { connect } from 'react-redux';
import LoginPage from "./components/loginPage/loginPage";
import MainPage from "./components/dashboard/mainPage";
import AuditPage from "./components/auditPage/AuditPage.js";
import Navbar from "./components/navbar/Navbar";
import Test01 from "./components/dev/test01";
import Test02 from "./components/dev/test02";
import {Router, Route, BrowserRouter, Redirect, Switch} from 'react-router-dom';
import {history} from "./helpers/history";
import TestsNav from "./components/dev/TestsNav";
class App extends React.Component {
constructor(props){
super(props);
}
render() {
return (
<div className="main-container">
<Router history={history}>
{localStorage.getItem('user') && (//this fires only once, when the page is loaded
<Navbar history={history} />
)}
<Switch>
<Route exact path="/login" component={LoginPage}/>
<Route exact path="/" component={MainPage}/>
<Route exact path="/audit" component={AuditPage}/>
<Route exact path="/test01" component={Test01}/>
<Route exact path="/test02" component={Test02}/>
</Switch>
</Router>
</div>
)
}
}
function mapStateToProps(state) {
return {
};
}
const connectedApp = connect(mapStateToProps)(App);
export default connectedApp;
问题是当用户登录并将数据设置为 localstorage - navbar 不显示 - 类 App.js 没有重新呈现。我得到了导航栏的渲染条件 - 但它只在页面加载时触发一次。因此,如果我想显示导航栏,我需要按 f5,然后才会出现。欢迎任何如何解决它的想法。谢谢。
【问题讨论】:
-
尝试实现经过身份验证的路由。
标签: javascript reactjs