我已经创建了一个在童话书中工作的组件,它已经被发布到一个私人回购中。当我使用这个使用<navLink>
的导航组件时,我会得到一个Uncaught Error: useLocation() may be used only in the context of a <Router> component
。我一直在寻找这个,并一直得到同样的答案。这就是在<BrowserRouter>
标签中扭曲应用程序。然而,我的应用程序被包装在一个<BrowserRouter>
标签中,我仍然会收到这个错误。任何帮助都是受欢迎的,因为我正在把我的头从屏幕上敲下来。
索引文件
import React from 'react';
import { BrowserRouter } from 'react-router-dom';
import ReactDOM from 'react-dom/client';
import App from './components/Container/App';
import store from './app/store';
import { Provider } from 'react-redux';
const root = ReactDOM.createRoot(document.getElementById('root') || new DocumentFragment());
root.render(
<React.StrictMode>
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
</React.StrictMode>
);
App文件
import React from 'react';
import { Routes, Route } from 'react-router-dom';
import PageLayout from '../UI/PageLayout/PageLayout';
import Home from '../Home/Home';
import Portal from '../Portal/Portal';
import ProductSearch from '../ProductSearch/ProductSearch';
import { InternalRoutes } from '../../common/enums/internal-routes';
import Inbox from '../Inbox/Inbox';
const App = () => {
return (
<PageLayout >
<Routes>
<Route path={InternalRoutes.Default} element={<Home />} />
<Route path={InternalRoutes.Home} element={<Home />} />
<Route path={InternalRoutes.Inbox} element={<Inbox />} />
<Route path={InternalRoutes.Portal} element={<Portal />} />
<Route path={InternalRoutes.ProductSearch} element={<ProductSearch />} />
</Routes>
</PageLayout>
);
};
export default App;
PageLayout文件
import React, { FC, ReactNode } from 'react';
import { Logo, PrimaryNavigation } from 'my-component-lib';
import { InternalRoutes as Routes } from '../../../common/enums/internal-routes';
interface I_PageLayoutProps {
children: ReactNode;
}
const PageLayout:FC<I_PageLayoutProps> = ({children}) => {
return (
<div className="body_grid">
<header>
<Logo />
<PrimaryNavigation navigationLinks={Object.values(Routes) as unknown as Array<keyof typeof Routes>} />
</header>
<div className={'main_Grid'} >{children}</div>
</div>
);
};
export default PageLayout;
发布于 2022-12-01 15:45:15
您可以通过从Index
文件中删除 <BrowserRouter>
并在App
文件中包装 <Routes>
标记来解决这个问题。
新指数
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './components/Container/App';
import store from './app/store';
import { Provider } from 'react-redux';
const root = ReactDOM.createRoot(document.getElementById('root') || new DocumentFragment());
root.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>
);
新应用程序文件
import React from 'react';
import { Routes, Route,BrowserRouter } from 'react-router-dom';
import PageLayout from '../UI/PageLayout/PageLayout';
import Home from '../Home/Home';
import Portal from '../Portal/Portal';
import ProductSearch from '../ProductSearch/ProductSearch';
import { InternalRoutes } from '../../common/enums/internal-routes';
import Inbox from '../Inbox/Inbox';
const App = () => {
return (
<PageLayout >
<BrowserRouter>
<Routes>
<Route path={InternalRoutes.Default} element={<Home />} />
<Route path={InternalRoutes.Home} element={<Home />} />
<Route path={InternalRoutes.Inbox} element={<Inbox />} />
<Route path={InternalRoutes.Portal} element={<Portal />} />
<Route path={InternalRoutes.ProductSearch} element={<ProductSearch />} />
</Routes>
</BrowserRouter>
</PageLayout>
);
};
export default App;
我希望这能解决问题
https://stackoverflow.com/questions/74644415
复制相似问题