Маршрут реакции не работает с пользовательской панелью навигации

#reactjs #react-router #navbar #react-router-dom

#reactjs #реагирующий маршрутизатор #панель навигации #react-router-dom

Вопрос:

Я использую пользовательскую библиотеку навигационной панели, которую я нашел в NPM, для рендеринга моей навигационной панели, но navlinks в пользовательской навигационной панели они не работают. Когда я нажимаю на ссылки, маршрут обновляется в адресной строке, но компонент не отображается. Хотя при использовании простого списка я могу отобразить все маршруты.

Пример CodeSandbox для репликации

 function App() {

return (
    <React.Fragment>
        /* This custom navbar is not working for routing */
        <Navbar></Navbar>

        /* This list is working fine for routing */
        {/* <ul>
            <li>
                <NavLink to='/'>Home</NavLink>
            </li>
            <li>
                <NavLink to='/about'>About</NavLink>
            </li>
            <li>
                <NavLink to='/contact'>Contact</NavLink>
            </li>
        </ul> */}

        <Switch>
            <Route exact path='/' component={Home} />
            <Route path='/about' component={About} />
            <Route path='/contact' component={Contact} />
        </Switch>
    </React.Fragment>
  );
}
 

Это пользовательский компонент панели навигации, который я использую: Пользовательская панель навигации

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

1. Можете ли вы предоставить ссылку на изолированную среду с той же проблемой

2. Есть ли у вас компонент «Маршрутизатор» для этого?

3. @Syder да, я завернул компонент приложения с помощью BrowserRouter в index.js

4. @GayatriDipali Я добавил пример codesandbox для репликации сейчас: codesandbox.io/s/intelligent-http-sswgt?file=/src/App.js

5. Я думаю, это проблема с пакетом, ссылка на проблему open github: github.com/Nazeh-Taha/react-responsive-animate-navbar/issues/4 , может быть, вы сможете найти там помощь

Ответ №1:

вы можете забыть обернуть свой код с <Router> or <BrowserRouter> помощью .

Примерьте:

 import {BrowserRouter, Router} from "react-router-dom";

 <BrowserRouter>
            <React.Fragment>
                ...
            </React.Fragment>
  </BrowserRouter>

 

или

 <Router>
            <React.Fragment>
                ...
            </React.Fragment>
</Router>
 

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

1. вы пробовали свое решение?

2. как я уже сказал в своем описании, я уже обернул компонент приложения с помощью BrowserRouter. Так что я думаю, что это не сработает, мой друг. Пожалуйста, проверьте пример песочницы кода, который я добавил.

3. Я просмотрел ваш код @PR7 в поле Codesandbox. Да, я понятия не имею, почему маршрутизатор не работает. Извините.

4. @AlmazAtun без проблем 🙂 Возможно, с этим пакетом NPM возникла какая-то проблема, поскольку на github есть некоторые открытые проблемы для этого репозитория.