React NavLink无法正常工作(不会重新渲染页面)

时间:2018-11-11 12:25:35

标签: node.js reactjs routes react-router navbar

我想在我的网站上放置一个不同的菜单,并且我决定NavBar将是一个不错的选择,因为它是react库的一部分。我成功完成了所有工作,并将菜单集成到我的网站中,但是随后我注意到我所有的链接均不起作用(下拉按钮除外)。

这是我的代码:

App.js

    import React, { Component } from 'react';
    import './App.css';
    import Header from './components/Header/Header.jsx';
    import HeaderTop from './components/HeaderTop/HeaderTop.jsx';
    import Home from './components/Home/Home.jsx';
    import SecondPage from './components/SecondPage/SecondPage.jsx';
    import {BrowserRouter, Route, Switch}from 'react-router-dom';
    import Footer from './components/Footer/Footer.jsx';
    import Menu from './components/Menu/Menu.jsx';

    class App extends Component {
      render() {
        return (

          <div>
          <div>
            <HeaderTop />
            <Menu />
          </div>
            <BrowserRouter>
          <Switch>
            <Route path="/" component={Home} exact/>
            <Route path="/SecondPage" component={SecondPage} exact/>
            </Switch>
          </BrowserRouter>
          <div>

          </div>
          </div>




        );
      }
    }

    export default App;

Menu.jsx

import React, { Component } from 'react';
import { Navbar, NavbarBrand, NavbarNav, NavbarToggler, Collapse, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'mdbreact';
import { BrowserRouter as Router } from 'react-router-dom';

class Menu extends Component {
    constructor(props) {
        super(props);
        this.state = {
            collapse: false,
            isWideEnough: false,
            dropdownOpen: false
        };
    this.onClick = this.onClick.bind(this);
    this.toggle = this.toggle.bind(this);
    }

    onClick(){
        this.setState({
            collapse: !this.state.collapse,
        });
    }

    toggle() {
        this.setState({
            dropdownOpen: !this.state.dropdownOpen
        });
    }

    render() {
        return (
            <Router>
                <Navbar color="indigo" dark expand="md" scrolling>
                    <NavbarBrand href="/">
                        <strong>HOME</strong>
                    </NavbarBrand>
                    { !this.state.isWideEnough && <NavbarToggler onClick = { this.onClick } />}
                    <Collapse isOpen = { this.state.collapse } navbar>
                        <NavbarNav left>
                          <NavItem active>
                              <NavLink to="/">Home</NavLink>
                          </NavItem>
                          <NavItem>
                              <NavLink to="/SecondPage">Features</NavLink>
                          </NavItem>
                          <NavItem>
                              <NavLink to="#">Pricing</NavLink>
                          </NavItem>
                          <NavItem>
                              <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggle}>
                              <DropdownToggle nav caret>Dropdown</DropdownToggle>
                              <DropdownMenu>
                                  <DropdownItem href="/SecondPage">Action</DropdownItem>
                                  <DropdownItem href="#">Another Action</DropdownItem>
                                  <DropdownItem href="#">Something else here</DropdownItem>
                                  <DropdownItem href="#">Something else here</DropdownItem>
                              </DropdownMenu>
                              </Dropdown>
                          </NavItem>
                        </NavbarNav>
                        <NavbarNav right>
                          <NavItem>
                            <form className="form-inline md-form mt-0">
                              <input className="form-control mr-sm-2 mb-0 text-white" type="text" placeholder="Search" aria-label="Search"/>
                            </form>
                          </NavItem>
                        </NavbarNav>
                    </Collapse>
                </Navbar>
            </Router>
        );
    }
}
export default Menu;

出于测试目的,我使用的路由是“ /”和“ SecondPage”。如果我将其更改为可以,但不适用于菜单。我对React还是很陌生,因此将不胜感激!预先感谢!

0 个答案:

没有答案