Dave
Dave

Reputation: 2028

Watch route params changes, re-fetch data on change

How can I react to route param changes? I want to re-fetch data for new params of my item. For e.g whenever I move from /1 to /2 I want to fetch the data for id 2. How can I do this using router v6?

import './App.css';
import { useParams } from "react-router-dom";

function Item() {
  const { id } = useParams();

    return (
      <div className="test">
       test of nested route id: { id };
      </div>
    );
  }
  
  export default Item;
  

Upvotes: 1

Views: 3499

Answers (2)

user18206260
user18206260

Reputation:

You can detect changes with useEffect

import './App.css';
import { useParams } from "react-router-dom";
import {useEffect} from "react"

function Item() {
  const { id } = useParams();

  useEffect(() => {
    //...your function goes here
  }, [id])

    return (
      <div className="test">
       test of nested route id: { id };
      </div>
    );
  }

export default Item;

Upvotes: 3

Junhyunny
Junhyunny

Reputation: 884

Routing like this.

import {Route, Routes} from "react-router-dom";
import Item from "./components/Item";

function App() {
    return (
        <Routes>
            <Route path="/main/:id" element={<Item/>}/>
        </Routes>
    );
}

export default App;

Then use params.

import './App.css';
import { useParams } from "react-router-dom";

function Item() {
  const { id } = useParams();

    return (
      <div className="test">
       test of nested route id: { id };
      </div>
    );
  }

export default Item;

Upvotes: 0

Related Questions