Как обновить хэш URL при прокрутке разделов в ReactJS

#javascript #reactjs #scroll #sections

#javascript #reactjs #прокрутка #разделы

Вопрос:

Я боролся с этой проблемой около 2 часов и не могу найти способ сделать это.

Я хотел бы обновить свой хэш URL-адреса (#home, #about и т. Д.) При прокрутке этих разделов и таким же образом выделить текущий раздел в моей панели навигации. Я нашел разные ответы в Jquery, но дело в том, что я использую ReactJS, и мне сказали, что использовать Jquery с ReactJS не очень хорошая идея / полезно использовать Jquery с ReactJS.

Я также нашел и попробовал этот пакет:https://www.npmjs.com/package/react-scrollable-anchor Но проблема в том, что хэш обновляется только после завершения прокрутки.

Редактировать :

 <ul>
  <li>
      <a href="#">Home</Link>
  </li>
  <li>
      <a href="#about">About</Link>
  </li>
  <li>
      <a href="#skills">Skills</Link>
  </li>
</ul>
  

Когда я нажимаю на About, мой URL-адрес становится следующим: localhost: 3000 / #about и автоматически переходит к этому разделу, отсюда все в порядке.
Но если я прокручиваю (нигде не щелкая) раздел навыков, я хочу, чтобы URL-адрес автоматически переходил на localhost: 3000 / #skills, а панель навигации высвечивала навыки.

Надеюсь, вы сможете помочь мне решить эту проблему. Спасибо!

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

1. Вы уже нашли решение? Сталкиваюсь с той же проблемой…

2. вы нашли решение для этого?

3. все еще задаетесь вопросом об этой проблеме, как так много сайтов делают это?

Ответ №1:

Вы должны просто использовать библиотеку ‘react-router-dom’ для маршрутизации и обработки URL-путей. у них очень четкая документацияhttps://reactrouter.com/web/example/basic. For You help Просто определите путь в to реквизите Link , куда вы хотите перейти!

        <ul>
          <li>
            <Link to="/test">Home</Link>
          </li>      
          <li>
            <Link to="/dashboard">Dashboard</Link>
          </li>
        </ul>
  

Теперь просто перейдите к этому объявленному пути, обернув его в

           <Route exact path="/test">
            <Home />
          </Route>
  

Делая все это.Хэш URL больше не будет проблемой 😉

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

1. Я не уверен, что вы полностью понимаете мою проблему, я говорю о разделе на одной странице, я не хочу перемещаться по нескольким страницам. Я попытался, как вы сказали, и изменил раздел, но дело в том, что он просто отображает компонент в имени пути. Я редактирую свой пост, чтобы быть более понятным 🙂