GOOGLE ADS

sábado, 16 de abril de 2022

cómo pasar el contexto de salida a la ruta anidada en reaccionar enrutador v6

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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...