ron*_*yrr 5 javascript reactjs react-router
使用 React Router v6 我想渲染回调页面。尽管我无法从屏幕中的 element 属性获取输出。我只从 out 获取输出,并且回调页面始终是空白屏幕或 404。新的 React Router 缺少什么?
const App: React.FC = () => (
<>
<GlobalStyle />
<Suspense fallback={<Loading fullScreen />}>
<Routes>
<Route path="/" element={<PrivateRoute component={Home} />} />
<Route path="/login" element={<PublicRoute component={Login} />} />
<Route path="/auth/*" element={<p>auth</p>}>
<Route path="callback" element={<p>callback</p>} />
</Route>
</Routes>
</Suspense>
</>
);
Run Code Online (Sandbox Code Playgroud)
const App: React.FC = () => (
<>
<GlobalStyle />
<Suspense fallback={<Loading fullScreen />}>
<Routes>
<Route path="/" element={<PrivateRoute component={Home} />} />
<Route path="/login" element={<PublicRoute component={Login} />} />
<Route path="/auth/callback" element={<p>callback</p>} />
</Routes>
</Suspense>
</>
);
Run Code Online (Sandbox Code Playgroud)
另外使用Outlet似乎并不能解决问题..
const App: React.FC = () => (
<>
<GlobalStyle />
<Suspense fallback={<Loading fullScreen />}>
<Routes>
<Route path="/" element={<PrivateRoute component={Home} />} />
<Route path="/login" element={<PublicRoute component={Login} />} />
<Route path="/auth/*" element={<><p>auth</p><Outlet /></>}>
<Route path="callback" element={<p>callback</p>} />
</Route>
</Routes>
</Suspense>
</>
);
Run Code Online (Sandbox Code Playgroud)
它BrowserRouter在我的Root组件中,它正在渲染App。
正如预期的输出,我不需要路由本身auth显示任何内容(就像使用<Outlet />,尽管我确实尝试过),但我只希望显示子路由。
这与您的示例并不严格相关(因为您在子路线中使用了确切的路径),但我遇到了类似的问题并认为它可能相关。我通过将index属性添加到子路由中解决了这个问题。根据 Outlet 的文档:
如果父路由完全匹配,则将渲染子索引路由;如果没有索引路由,则不渲染任何内容。
使用您的最后一个示例,如果您的用例类似,则类似的内容应该可以工作:
const App: React.FC = () => (
<>
<GlobalStyle />
<Suspense fallback={<Loading fullScreen />}>
<Routes>
<Route path="/" element={<PrivateRoute component={Home} />} />
<Route path="/login" element={<PublicRoute component={Login} />} />
<Route path="/auth/callback" element={<><p>auth</p><Outlet /></>}>
<Route index element={<p>callback</p>} />
</Route>
</Routes>
</Suspense>
</>
);
Run Code Online (Sandbox Code Playgroud)
(请注意,这仅是说明性的,因为在这个简单的示例中不需要使用 Outlet 和子路由)
| 归档时间: |
|
| 查看次数: |
4609 次 |
| 最近记录: |