Estoy usando el enrutador de reacción dom v6, ¿cómo puedo acceder al contexto en una ruta anidada en el segundo hijo?
<Routes>
<Route element={<Parent/>}>
<Route element={<Child/>}>
<Route element={<ChildSecond/>}/>
</Route>
<Route>
</Routes>
Pasé un contexto a Outlet en ParentComponent. Quiero acceder a él ChildSecondsin pasarlo de nuevo en el Childcomponente Outlet.
código esperado
Componente principal:
const Parent = ()=>{
const myContext = {someData:'hello world'}
return <Outlet context={myContext}/>
}
Componente hijo:
const Child = ()=><Outlet/>
NiñoSegundo componente
import {useOutletContext} from 'react-router-dom'
const ChildSecond = ()=>{
const {someData} = useOutletContext()
return <div>someData</div>
}
Solución del problema
Puede definir un contexto en el componente principal y proporcionarlo a toda la aplicación:
export const GlobalContext = React.createContext();
...
<GlobalContext.Provider
value={{someData: 'hello world'}}>
<Routs>
<Route element={<Parent/>}>
<Route element={<Child/>}>
<Route element={<ChildSecond/>}/>
</Route>
<Route>
</Routes>
</GlobalContext.Provider>
Luego recupere los datos en cualquier lugar de su aplicación con:
import { useContext } from 'react'
import { GlobalContext } from '/path/to/main/file';
...
const { someData } = useContext(GlobalContext);
No hay comentarios:
Publicar un comentario