'React.js Provider- Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly
I am trying to move my React.js app to version 18. I have put my BrowserRouter component into a <Provider>, as shown below:
const root = createRoot(document.getElementById('root'))
const router = (
<Provider store={store}>
<BrowserRouter>
<Routes>
<Route path="/" element={<MainComponent />} />
<Route path="/about" element={<AboutComponent />} />
<Route path="/account/appeal" element={<AppealComponent />} />
<Route path="/account/login" element={<LoginComponent />} />
<Route path="/account/register" element={<RegisterComponent />} />
<Route path="/admin-dashboard" element={<AdminDashboardComponent />} />
<Route path="/app" element={<AppComponent />} />
<Route path="/blog/latest-posts" element={<ViewBlogPostsComponent />} />
<Route path="/blog/post" element={<BlogPostComponent />} />
<Route path="/contact" element={<ContactComponent />} />
<Route path="/download" element={<DownloadComponent />} />
<Route path="/forum/categories" element={<ViewForumCategoriesComponent />} />
<Route path="/store" element={<StorePage />} />
<Route path="/submissions" element={<SubmissionsPage />} />
<Route path="/submissions/view-submission" element={<SubmissionDetailsPage />}/>
<Route path="/submissions/edit" element={<EditSubmissionComponent />} />
<Route path="/policies/acceptable-use-policy" element={<AcceptableUsePolicyComponent />} />
<Route path="/policies/code-of-conduct" element={<CodeOfConductComponent />} />
<Route path="/policies/cookie-policy" element={<CookiePolicyComponent />} />
<Route path="/policies/copyright-policy" element={<DMCAPolicyComponent />} />
<Route path="/policies/privacy-policy" element={<PrivacyPolicyComponent />} />
<Route path="/policies/terms-and-conditions" element={<TermsAndConditionsComponent />} />
<Route path="/profile" element={<ProfilePageComponent />} />
<Route path="/wiki" element={<ViewWikiPageComponent />} />
<Route path="*" element={<Error404Component />} />
</Routes>
</BrowserRouter>
</Provider>
);
However, my app crashes and the following error message is visible in the console:
router.ts:5 Uncaught Error: A <Route> is only ever to be used as the child of <Routes>
element, never rendered directly. Please wrap your <Route> in a <Routes>.
at invariant (router.ts:5:1)
at Route (components.tsx:147:1)
at renderWithHooks (react-dom.development.js:16175:1)
at mountIndeterminateComponent (react-dom.development.js:20913:1)
at beginWork (react-dom.development.js:22416:1)
at HTMLUnknownElement.callCallback (react-dom.development.js:4161:1)
at Object.invokeGuardedCallbackDev (react-dom.development.js:4210:1)
at invokeGuardedCallback (react-dom.development.js:4274:1)
at beginWork$1 (react-dom.development.js:27405:1)
at performUnitOfWork (react-dom.development.js:26513:1)
Can you please help me with this? I need the Provider for checking if a user is logged in, so I can't just remove the <Provider>.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
