0

My Link tag is not working properly, When I am clicking to another page the URL is changing but it's not redirecting me to that page reloading, So when I reload the website then it's redirecting to that page. No error in the console

I searched for the issue everywhere but I couldn't find the solution. Any help would be much appreciated.

This is the code:

import React from 'react';
import PropTypes from 'prop-types'
import { Link } from 'react-router-dom'
export default function Header(props){
    return (
    <nav className="navbar navbar-expand-lg bg-light">
      <div className="container-fluid">
        <Link className="navbar-brand" to="/">{props.title}</Link>
        <button className="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span className="navbar-toggler-icon"></span>
        </button>
        <div className="collapse navbar-collapse" id="navbarSupportedContent">
          <ul className="navbar-nav me-auto mb-2 mb-lg-0">
            <li className="nav-item">
              <Link className="nav-link active" aria-current="page" to="/">Home</Link>
            </li>
            <li className="nav-item">
              <Link className="nav-link active" to="/about">About</Link>
            </li>
          </ul>
          { props.searchBar? <form className="d-flex" role="search">
            <input className="form-control me-2" type="search" placeholder="Search" aria-label="Search"></input>
            <button className="btn btn-outline-success" type="submit">Search</button>
          </form>:"Searchbar is not available"}
        </div>
      </div>
    </nav>
    )
};

My App.js code:-

import './App.css';
import Header from './My Components/header.js'
import AddTodo from './My Components/AddTodo'
import Todos from './My Components/todos'
import { About } from './My Components/About'
import Footer from './My Components/footer'
import React, { useState, useEffect } from 'react';
import {
  BrowserRouter as Router,
  Switch,
  Route,
} from "react-router-dom";
function App() {
  let initTodos = JSON.parse(localStorage.getItem("todos")) || [];
  const onDelete = (todo) => {
      setTodosList(TodosList.filter((e) => {
      return e !== todo;
    }))
    localStorage.setItem("todos", JSON.stringify(TodosList))
  }

  const addTodo = (title, description) => {
    console.log("I am adding this todo", title, description)
    let id;
    if (TodosList.length === 0) {
      id = 1;
    } else {
      id = TodosList[TodosList.length - 1].id + 1;

    }
    let myTodo = {
      id, title, description
    }
    setTodosList([...TodosList, myTodo])
    console.log(' ', myTodo)
  }

  const [TodosList, setTodosList] = useState(initTodos)
  useEffect(() => {
    localStorage.setItem("todos", JSON.stringify(TodosList))
  }, [TodosList])
  return (
    <>
      <Router>
        <Header title="My Todo App" searchBar={false} />
        <Switch>
          {/* <Route path="/" render={()=>{
            return(
              <>
              <AddTodo addTodo={addTodo} />
              <Todos todos={TodosList} onDelete={onDelete} />
              </>
            ) 
          }}>
          </Route> */}
          <Route exact path="/">
            <><AddTodo addTodo={addTodo} />
              <Todos todos={TodosList} onDelete={onDelete} />
            </>
          </Route>
          <Route exact path="/about">
            <About />
          </Route>
        </Switch>
        <Footer />
      </Router>
    </>
  );
}

export default App;
Ritik
  • 51
  • 7
  • Can you also post your App.js, or wherever your router is setup? – FlushBG Oct 05 '22 at 13:29
  • What ***specific*** versions of `react` and `react-router-dom` are installed? You can check by running `npm list react react-router-dom` in the terminal at the project's root directory. From what you describe I suspect you have `react@18` and some `react-router-dom@5.2` installed. If so, does this help answer your question? https://stackoverflow.com/a/71833424/8690857 – Drew Reese Oct 05 '22 at 15:40
  • Thanks @DrewReese, for solving my doubt I just installed the latest version of react-router-dom & its working. – Ritik Oct 06 '22 at 12:40

0 Answers0