Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

281
Vistas
No se puede usar React Context en componentes descendientes profundos

Estoy tratando de usar el estado global en mi aplicación React usando React Context y el gancho useReducer . Cuando trato de acceder al estado usando mi useStateContext en descendientes lejanos, vuelvo a estar indefinido. Como prefacio, estoy usando react-three-fiber donde obtengo mi error de contexto.

App.js

 const App = () => { return ( <GameProvider> <AppState /> </GameProvider> ); }; const AppState = () => { const state = useStateContext() // this works. Direct child of Provider return <Game /> } const Game = () => { const state = useStateContext(); // this works. 2nd descendant of Provider return <Scene/> }; const Scene = () => { const state = useStateContext(); // this works. 3rd descendant return ( <div id={styles.scene}> <Canvas > <OrbitControls minDistance={9} maxDistance={9} /> <ambientLight intensity={0.5} /> <spotLight position={[10, 15, 10]} angle={0.3} /> <Cube size={5} position={[0, 0, 0]} /> </Canvas> </div> ); }; const Cube = () => { const state = useStateContext(); // returns undefined. What gives? return <group></group> }

StateContext.js

 import React, { useContext, createContext, useReducer } from 'react' import reducer from './reducer'; const StateContext = createContext(); const DispatchContext = createContext(); export const useDispatchContext = () => useContext(DispatchContext) export const useStateContext = () => useContext(StateContext); const initialState = { test: 1 } export const GameProvider = ({ children }) => { const [state, dispatch] = useReducer(reducer, initialState) return ( <DispatchContext.Provider value={dispatch}> <StateContext.Provider value={state} > {children} </StateContext.Provider> </DispatchContext.Provider> ) }

Quería usar Context ya que pensé que podía obtener el estado en cualquier descendiente de mi aplicación. Intenté consultar los documentos de reacción sobre este problema, pero fue en vano.

EDITAR:

También creo que sería importante mencionar que estoy usando react-three-fiber que envuelve mi componente Cube en un Canvas .

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Resulta que este es un problema bastante común con el uso de la API de React Context con react-three-fiber . A través de la documentación, decidí usar useContextBridge react-three-drei ya que ya estaba usando el paquete. Encontré la documentación aquí para mi solución.

 const ContextBridge = useContextBridge(StateContext, DispatchContext) return ( <div id={styles.scene}> <Canvas > <OrbitControls minDistance={9} maxDistance={9} /> <ambientLight intensity={0.5} /> <spotLight position={[10, 15, 10]} angle={0.3} /> <spotLight position={[10, -15, -30]} angle={0.3} /> <ContextBridge> <Cube size={5} position={[0, 0, 0]} /> </ContextBridge> </Canvas> </div> );
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda