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

218
Vistas
React falla al renderizar el nuevo componente después del cambio de estado

Lo siguiente falla al representar el Componente seleccionado incluso cuando se actualiza el estado. Supuse que podría tener que ver con la verificación superficial que hace reaccionar, sin embargo, después de forzar una nueva representación, la página aún muestra el componente seleccionado originalmente y no el nuevo componente. La única forma en que conseguí que funcionara correctamente fue cambiando el estado del servicio activo a <></> y luego cambiándolo al Componente de servicio correcto. Cualquier ayuda sería apreciada.

 import React, { Component } from "react"; import AquireServices from "./AquireService"; import Navigation from "./Navigation"; import Service from "./Service"; class App extends Component{ constructor(props) { super(props); this.state=({ services: {}, activeService: <></> }); } async componentDidMount() { try{ let services = await AquireServices(); this.setState({ services: services }); } catch(error) { console.log(error); } } selectedField = async (field) => { let service = this.state.services[field]; if(service){ this.setState({ activeService: <Service props={service} /> }); } } render() { return( <Box sx={{ padding: 0, display: 'flex' }}> <Navigation selectFunction={this.selectedField.bind(this)}/> {this.state.activeService} </Box> ); } } export default App;

Inicial

Visualización del campo correcto

Visualización del campo anterior después del cambio de estado

Salida después de los cambios: ingrese la descripción de la imagen aquí

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

0

No, no, no necesita almacenar un componente e intentar representarlo a través del objeto de estado.

Si observa, lo único que cambia cuando selecciona cosas en el cuadro de Navigation Box son los accesorios de service .

Entonces, en lugar de almacenar un componente completo, puede almacenar los accesorios del servicio seleccionado. Luego, puede pasar esos accesorios directamente al componente Service en render() , así:

 class App extends Component{ constructor(props) { super(props); this.state=({ services: {}, activeService: undefined }); } async componentDidMount() { try{ let services = await AquireServices(); this.setState({ services: services }); } catch(error) { console.log(error); } } selectedField = async (field) => { let service = this.state.services[field]; if(service){ this.setState({ activeService: service }); } } render() { const {activeService} = this.state; return( <Box sx={{ padding: 0, display: 'flex' }}> <Navigation selectFunction={this.selectedField.bind(this)}/> {activeService ? <Service props={activeService}> : undefined} </Box> ); } }
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