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

259
Vistas
El proveedor de contexto React.js no pasa los valores proporcionados a useContext

Problema:

Estoy usando el enlace useContext para pasar datos a través del DOM, pero los únicos datos que se pasan en este momento son los valores iniciales de ImageContext .

Mis hallazgos:

  • Las images de estado en ImageContextProvider contienen los valores correctos (primera declaración inicial y alteración de los datos obtenidos).
  • Cambiar los valores iniciales del estado (no el contexto), que se puede encontrar en ImageContextProvider , no cambió la salida del useContext -> Aún así, solo se enviaron los valores de contexto iniciales
  • Poner todo en un solo archivo (para evitar algún tipo de referencia incorrecta) tampoco solucionó el problema.
  • No encontré ningún problema similar en el desbordamiento de pila

image_context.js

 export const ImageContext = createContext({ images: [], loading: true, setImages: () => {}, }); const ImageContextProvider = props => { const [images, setImages] = useState({ images: [], loading: true }); // Array instead of object const fetchData = () => { imagesServices.loadImages().then((img) => { setImages({ images: img, loading: false }) }) } useEffect(() => { fetchData(); }, []); useDebugValue(images ?? 'loading...') let value = {images: images.images, loading: images.loading, setImages: setImages} return( <ImageContext.Provider value={value}> {props.children} </ImageContext.Provider> ); }; export default ImageContextProvider;

visualizador.js

 const Visualizer = () => { return ( <ImageContextProvider> <Canvas camera={{position: new THREE.Vector3( 0, 0, -0.5 ), fov: 60}}> <ambientLight intensity={0.3}/> <group> <ImageGroup /> </group> <OrbitControls enableZoom={false} enablePan={false}/> </Canvas> </ImageContextProvider> ); }; export default Visualizer;

image_group.js

 const ImageGroup = (props) => { const { roomID = '0', ...restProps } = props; const {images, loading, setImages} = useContext(ImageContext); if (images.loading) return null return ( <Suspense fallback={null}> { images.map((img) => (<ImagePlane key={img['imageID']} imgLink={img['imgLink']} position={img['position']} aspectRatio={img['aspect_ratio']}/>) ) } </Suspense> ); }; export default ImageGroup;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La solución a mi problema fue poner ImageContextProvider dentro del lienzo. Esto es necesario porque los elementos dentro del lienzo usan un contexto diferente, como se explica aquí: https://github.com/pmndrs/react-three-fiber/blob/master/docs/API/hooks.mdx

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