Reputation: 423
I am trying to create a website by using Reactjs. I tried to create Navbar and on navbar, I created 2 links which are Home and Contact. When I click for example contact button, I can see the end-point on URL but on the page, nothing happens. I have already created Routes and Links but I really did not understand why I can not use Navbar's links. May you help me, please? Thank you in advance.
import React from 'react';
import PropTypes from 'prop-types';
import {BrowserRouter, Link} from "react-router-dom";
const Navbar = () => {
return (
<BrowserRouter>
<nav>
<ul>
<li><Link to='/'>Sağlık Hizmetim</Link></li>
<li><Link to='/contact'>İletişim</Link></li>
</ul>
</nav>
</BrowserRouter>
);
};
Navbar.propTypes = {};
export default Navbar;
It was my Navbar component.
import React from 'react';
import {Route,BrowserRouter,Switch} from 'react-router-dom';
import Contact from "./Contact";
import Home from './Home';
const Routes = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/contact' component={Contact}/>
</Switch>
</BrowserRouter>
);
};
export default Routes;
It was my Route component. Also, I have called route and navbar component in App.js.
Upvotes: 2
Views: 19735
Reputation: 334
In Navbar component, just remove <BrowserRouter>
Navbar component:
import React from 'react';
import PropTypes from 'prop-types';
import {Link} from "react-router-dom";
const Navbar = () => {
return (
<nav>
<ul>
<li><Link to='/'>Sağlık Hizmetim</Link></li>
<li><Link to='/contact'>İletişim</Link></li>
</ul>
</nav>
);
};
Navbar.propTypes = {};
export default Navbar;
Routes component:
import React from 'react';
import {Route,BrowserRouter,Switch} from 'react-router-dom';
import Contact from "./Contact";
import Home from './Home';
import Navbar from './Navbar';
const Routes = () => {
return (
<BrowserRouter>
<div>
<Navbar />
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/contact' component={Contact}/>
</Switch>
</div>
</BrowserRouter>
);
};
export default Routes;
Hope this help!
Upvotes: 0
Reputation: 96
You should only have one instance of <BrowserRouter />
in your application. Remove the one from <Navbar />
and replace all the links with <NavLink />
as follows;
import React from "react";
import PropTypes from "prop-types";
import { NavLink } from "react-router-dom";
const Navbar = () => {
return (
<nav>
<ul>
<li>
<NavLink to="/">Sağlık Hizmetim</NavLink>
</li>
<li>
<NavLink to="/contact">İletişim</NavLink>
</li>
</ul>
</nav>
);
};
Navbar.propTypes = {};
export default Navbar;
Upvotes: 1
Reputation: 815
You should use one only one instance of Router in an App. Remove the BrowserRouter from Navbar Component and try:
import React from 'react';
import PropTypes from 'prop-types';
import {BrowserRouter, Link} from "react-router-dom";
const Navbar = () => {
return (
<nav>
<ul>
<li><Link to='/'>Sağlık Hizmetim</Link></li>
<li><Link to='/contact'>İletişim</Link></li>
</ul>
</nav>
);
};
Navbar.propTypes = {};
export default Navbar;
Upvotes: 3
Reputation: 32
Try to put below :
<a routerLink="/contact" routerLinkActive="active">{{Your data}}</a>
Upvotes: 0