【发布时间】:2019-02-25 02:50:16
【问题描述】:
所以我有一个导航栏,一旦用户单击“注销”,它就会呈现未登录用户看到的导航栏。到目前为止,我已经将其关闭,但我的问题是,当我单击网页上的其他点击之一时,例如“关于”,导航栏呈现回“注销”状态。我该如何解决这个问题?我认为这是因为在我的 App.js 源代码中,userId: 123(测试目的)是硬编码的,它总是运行它。
CustomNavbar.js
import React, { Component } from 'react'
import { Navbar, Nav, NavItem } from 'react-bootstrap';
class CustomNavbar extends Component {
render() {
if (this.props.userID === null) {
return (
<div>
<Navbar collapseOnSelect expand="md" bg="dark" variant="dark">
<Navbar.Brand href="/">
Ndnu's Notes
</Navbar.Brand>
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
<Navbar.Collapse id="responsive-navbar-nav">
</Navbar.Collapse>
</Navbar>
<Navbar className="footer text-center" fixed="bottom" expand="lg" bg="light">
<Nav.Link href="/contactus">Contact Us</Nav.Link>
<Nav.Link href="/privacyterms">Privacy & Terms</Nav.Link>
<Nav.Link href="/about">About</Nav.Link>
</Navbar>
</div>
)
} else {
return (
<div>
<Navbar collapseOnSelect expand="md" bg="dark" variant="dark">
<Navbar.Brand href="/">
Ndnu's Notes
</Navbar.Brand>
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
<Navbar.Collapse id="responsive-navbar-nav">
<Nav className="mr-auto">
</Nav>
<Nav>
<Nav.Link eventKey={2} href="/myAccount"> <i class="fas fa-user"></i> My Account</Nav.Link>
<Nav.Link eventKey={1} href="/" onClick={this.props.logUserOut}> <i class="fas fa-sign-out-alt"></i> Log Out</Nav.Link>
</Nav>
</Navbar.Collapse>
</Navbar>
{/* Footer */}
<Navbar fixed="bottom" bg="light">
<Nav.Link href="/contactus">Contact Us</Nav.Link>
<Nav.Link href="/privacyterms">Privacy & Terms</Nav.Link>
<Nav.Link href="/about">About</Nav.Link>
</Navbar>
</div>
)
}
}
}
export default CustomNavbar
App.js
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import LoginAndRegister from './LoginAndRegister'
import ContactUs from './Components/ContactUs.js';
import PrivacyTerms from './Components/PrivacyTerms.js';
import CustomNavbar from './Components/CustomNavbar.js';
import About from './Components/About.js';
import Table from './Components/Table.js';
class App extends React.Component {
constructor() {
super();
this.state = {
userID: 123
}
}
logUserOut = (e) => {
e.preventDefault()
this.setState({userID: null});
}
render() {
return (
<Router>
<div>
<CustomNavbar userID={this.state.userID} logUserOut={this.logUserOut} />
<Route exact strict path="/contactus" component={ContactUs} />
<Route exact strict path="/about" component={About} />
<Route exact strict path="/privacyterms" component={PrivacyTerms} />
{!this.state.userID && <LoginAndRegister userID={this.state.userID}/>}
<Table />
</div>
</Router>
)
}
}
export default App;
【问题讨论】:
标签: reactjs state react-props