Rev*_*n99 10 javascript reactjs react-router-dom
我正在使用 React router dom v6 如何访问第二个孩子的嵌套路由中的上下文
<Routes>
<Route element={<Parent/>}>
<Route element={<Child/>}>
<Route element={<ChildSecond/>}/>
</Route>
<Route>
</Routes>
Run Code Online (Sandbox Code Playgroud)
我将上下文传递给Parent组件中的 Outlet 我想访问它,而无需在组件 OutletChildSecond中再次传递它Child
预期代码
父组件:
const Parent = ()=>{
const myContext = {someData:'hello world'}
return <Outlet context={myContext}/>
}
Run Code Online (Sandbox Code Playgroud)
子组件:
const Child = ()=><Outlet/>
Run Code Online (Sandbox Code Playgroud)
ChildSecond 组件
import {useOutletContext} from 'react-router-dom'
const ChildSecond = ()=>{
const {someData} = useOutletContext()
return <div>someData</div>
}
Run Code Online (Sandbox Code Playgroud)
fol*_*ben 12
从 v6.3.0 开始。React-routeruseOutletContext() 仅适用于直接子组件。如果您确实不想创建自己的上下文,您可以轻松转发出口上下文,如下所示:
import React from 'react';
import { Routes, Route, Outlet, useOutletContext } from 'react-router-dom';
export default function App() {
return (
<Routes>
<Route element={<Grandparent />}>
<Route element={<Parent />}>
<Route index element={<Child />} />
</Route>
</Route>
</Routes>
);
}
function Grandparent() {
return (
<main>
<Outlet context={{ someData: 'hello world' }} />
</main>
);
}
function Parent() {
return <Outlet context={useOutletContext()} />;
}
function Child() {
const { someData } = useOutletContext<{ someData: string }>();
return <p>{someData}</p>;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16893 次 |
| 最近记录: |