как повторно визуализировать компонент при нажатии ссылки

У меня есть маршрут с простой панелью навигации и содержимым под ней.

<Link> из react-router-dom ничего не делает при нажатии на URL той же страницы.

<Route path="/samePage" component={Component} />
import React from 'react';
import { Link } from 'react-router-dom';

function SomeNavBar(){
   return (
      <Link to="/samePage">Refresh</Link>
   );
}

function Component(){
    // some state
    let [data, setData] = useState([]);

    useEffect(()=>{
      // fetch data from API here
    });

    return (
    <>
       <SomeNavBar />
       {/* Displaying the state*/}
    </>);
}

Я хотел бы обновить состояние по щелчку Link в NavBar. Таким образом, один из вариантов — использовать <a href> вместо <Link to="" />, потому что он перезагрузит страницу и сделает то, что нужно.

Но перезагрузка — это плохо, так как мы используем React, так как я могу повторно отобразить маршрут по клику?


person Phani Rithvij    schedule 09.07.2020    source источник
comment
Вы в основном пытаетесь создать кнопку, которая обновляет данные из вашего API?   -  person Drew Reese    schedule 09.07.2020
comment
Это можно сделать, но я хотел бы изменить поведение Link, чтобы, когда я нажимаю на него с другого маршрута, я переходил на маршрут, на который указывает ссылка, тогда как, если я нахожусь на той же странице, мне это нужно действовать как кнопка, которая повторно отображает компонент текущего маршрута. Я думал, что может быть встроенный способ сделать это, не занимаясь этим самостоятельно.   -  person Phani Rithvij    schedule 09.07.2020
comment
Обновить состояние по щелчку Ссылки -> onClick={() => setData([])} ?   -  person dejoma    schedule 09.07.2020
comment
Возможно, вы можете найти ответ здесь on-that-page" title="принуждение ссылки реагирующего маршрутизатора для загрузки страницы, даже если она уже была на этой странице"> stackoverflow.com/questions/38839510/   -  person Danilo Gacevic    schedule 09.07.2020
comment
@DaniloGacevic спасибо, что нашли этот вопрос. Я не смог получить это в Google, поэтому я должен был спросить это. Это может быть закрыто как дубликат.   -  person Phani Rithvij    schedule 10.07.2020