React NavLink не отображает компоненты

#reactjs #hyperlink #routes #router

#reactjs #гиперссылка #маршруты #маршрутизатор

Вопрос:

Я работаю над калькулятором выхода на пенсию. У него есть навигационный компонент со ссылками, я установил маршрутизатор с путями в App.js . Но navlinks не работают. Я не уверен, что не так с кодом. Пожалуйста, помогите, я новичок в reactjs

App.js

 import logo from './logo.svg';
import './App.css';
import InputForm from './InputForm';
import Navigation from './Navigation';
import 'bootstrap/dist/css/bootstrap.min.css';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import DisplayTable from './DisplayTable';
import RetirementComaparisionForm from './RetirementComparisionForm';

function App() {
  return (
    <BrowserRouter>
      <div className="App">
      
      <Navigation />
      
      <Switch>
        <Route exact path = "/" component = {InputForm}></Route>
        <Route exact path = "/retirementcomaparisionform" component = {RetirementComaparisionForm}></Route>
      </Switch>
      </div>
    </BrowserRouter>
    
    
  );
}

export default App;
 

Navigation.js

 import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import DisplayTable from './DisplayTable';
import {NavLink} from 'react-router-dom';
import {Navbar, Nav} from 'react-bootstrap';

class Navigation extends React.Component{
    render(){
        return(
            
    <Navbar bg="dark" expand="lg" variant = "dark">
        <Navbar.Brand>Retirement Calculator</Navbar.Brand>
        <Navbar.Toggle aria-controls="basic-navbar-nav" />
        <Navbar.Collapse id="basic-navbar-nav">
            <Nav className="mr-auto">
                <Nav.Link to = "/">Home</Nav.Link>
                <Nav.Link to = "/retirementcomaparisionform">Compare</Nav.Link>
        
            </Nav>
    
        </Navbar.Collapse>
    </Navbar>
            
            
        )
    }

}
export default Navigation;
 

Комментарии:

1. Можете ли вы показать, где вы создаете navlink ‘s?

2. Navigarion.js имеет навигационные ссылки во второй части приведенного выше кода

Ответ №1:

Вот рабочий пример: StackBlitz

введите описание изображения здесь

 import React from "react";
import ReactDOM from "react-dom";
import reportWebVitals from "./reportWebVitals";
import DisplayTable from "./DisplayTable";
import { NavLink, Link } from "react-router-dom";
import { Navbar, Nav } from "react-bootstrap";
import "bootstrap/dist/css/bootstrap.min.css";
import { BrowserRouter, Route, Switch } from "react-router-dom";

function App() {
  return (
    <BrowserRouter>
      <div className="App">
        <Navigation />

        <Switch>
          <Route exact path="/" component={InputForm} />
          <Route
            path="/retirementcomaparisionform"
            component={RetirementComaparisionForm}
          />
        </Switch>
      </div>
    </BrowserRouter>
  );
}

export default App;

class Navigation extends React.Component {
  render() {
    return (
      <Navbar bg="dark" expand="lg" variant="dark">
        <Navbar.Brand>Retirement Calculator</Navbar.Brand>
        <Navbar.Toggle aria-controls="basic-navbar-nav" />
        <Navbar.Collapse id="basic-navbar-nav">
          <Nav className="mr-auto">
            <Nav.Link href="/">Home</Nav.Link>
            <Nav.Link href="/retirementcomaparisionform">Compare</Nav.Link>
          </Nav>
        </Navbar.Collapse>
      </Navbar>
    );
  }
}

//dummy InputForm and RetirementComaparisionForm components

const InputForm = () => {
  return <h1>Input Form</h1>;
};

const RetirementComaparisionForm = () => {
  return <h1>Retirement Comaparision Form</h1>;
};

 

Комментарии:

1. Спасибо за код, попробовал, но он не отображает ссылки

2. Большое вам спасибо. Это сработало. Но что было не так с моим кодом?

3. Вы используете prop to вместо href inside Nav.Link .