簡體   English   中英

ReactJS 導航菜單

[英]ReactJS navigation menu

我是反應 JS 的新手。 下面是我們的 MainMenu 導航代碼。 我想僅在用戶已登錄時才顯示“注銷”(我們在另一個 JS 文件中使用 Google Signin API)。 我如何實現這一目標?

import React from 'react';
import { Link } from 'react-router';
import { IndexLink } from 'react-router';
import { LinkContainer, IndexLinkContainer } from 'react-router-bootstrap';
import { Button } from 'react-bootstrap';
import Navbar from 'react-bootstrap/lib/Navbar';
import Nav from 'react-bootstrap/lib/Nav';
import NavItem from 'react-bootstrap/lib/NavItem';
import UserStore from '../store/UserStore';
import cookie from 'react-cookie';
import { browserHistory } from 'react-router';

class MainMenu extends React.Component {


logout() {
    UserStore.logout();
    cookie.remove('userId', { path: '/' });
    cookie.remove('pic', { path: '/' });
    cookie.remove('email', { path: '/' });
    cookie.remove('profile', { path: '/' });
    browserHistory.push('/login');
}

viewDB() {
    browserHistory.push('/testDashboard');
}

render() {
    console.log("****************************************************");
    return (
    <Navbar collapseOnSelect>
<Navbar.Header>
  <Navbar.Brand>
    <a href="#">
                <img src={require('../images/logo.jpg')}/>
    </a>
  </Navbar.Brand>
  <Navbar.Toggle />
</Navbar.Header>
<Navbar.Collapse>
  <Nav pullRight>
    <NavItem eventKey={1} href="http://www.test.com/howitworks">How it works</NavItem>
    <NavItem eventKey={2} href="#">Why Test</NavItem>
    <NavItem eventKey={2} href="#">Blog</NavItem>
    <NavItem eventKey={2} href="#" onClick={this.viewDB}>My Energy Dashboard</NavItem>
    <NavItem eventKey={2} href="#">{"Hi " + localStorage.name}</NavItem>
    <NavItem eventKey={2} href="#" className="last" onClick={this.logout}>Logout</NavItem>
  </Nav>
    </Navbar.Collapse>
  </Navbar>

        );
    }
}

export default MainMenu;

在上面的代碼中,您將看到如何呈現(或不呈現)您的注銷,但您仍然需要編寫確定用戶是否登錄所需的代碼。

import React from 'react';
import { Link } from 'react-router';
import { IndexLink } from 'react-router';
import { LinkContainer, IndexLinkContainer } from 'react-router-bootstrap';
import { Button } from 'react-bootstrap';
import Navbar from 'react-bootstrap/lib/Navbar';
import Nav from 'react-bootstrap/lib/Nav';
import NavItem from 'react-bootstrap/lib/NavItem';
import UserStore from '../store/UserStore';
import cookie from 'react-cookie';
import { browserHistory } from 'react-router';

class MainMenu extends React.Component {
  constructor(props){
    super(props);

    this.renderLogout = this.renderLogout.bind(this);

    this.state = {
      mustShowLogout: false;
    }
  }

logout() {
    UserStore.logout();
    cookie.remove('userId', { path: '/' });
    cookie.remove('pic', { path: '/' });
    cookie.remove('email', { path: '/' });
    cookie.remove('profile', { path: '/' });
    browserHistory.push('/login');
}

viewDB() {
    browserHistory.push('/testDashboard');
}

renderLogout(){
    if(this.state.mustShowLogout)
        return (<NavItem eventKey={2} href="#" className="last" onClick={this.logout}>Logout</NavItem>);

    return null;
}

render() {
    console.log("****************************************************");
    return (
    <Navbar collapseOnSelect>
<Navbar.Header>
  <Navbar.Brand>
    <a href="#">
                <img src={require('../images/logo.jpg')}/>
    </a>
  </Navbar.Brand>
  <Navbar.Toggle />
</Navbar.Header>
<Navbar.Collapse>
  <Nav pullRight>
    <NavItem eventKey={1} href="http://www.test.com/howitworks">How it works</NavItem>
    <NavItem eventKey={2} href="#">Why Test</NavItem>
    <NavItem eventKey={2} href="#">Blog</NavItem>
    <NavItem eventKey={2} href="#" onClick={this.viewDB}>My Energy Dashboard</NavItem>
    <NavItem eventKey={2} href="#">{"Hi " + localStorage.name}</NavItem>
    {this.renderLogout()}
  </Nav>
    </Navbar.Collapse>
  </Navbar>

        );
    }
}

export default MainMenu;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM