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

175
Vistas
El estado no se actualiza al recibir nuevos accesorios (ReactJS)

Soy nuevo en Reaccionar. Estoy atascado en esto, ¡realmente agradecería algo de ayuda!

Un componente principal pasará una matriz a este componente secundario. Cuando hago console.log(this.props.repairs) me muestra una matriz de 4. Intento actualizar this.state.sortedDataList cada vez que se pasa la matriz de reparaciones. Console.log(this.state) sigue siendo mostrando sortedDataList como una matriz vacía.

¿Qué estoy haciendo mal? Muchas gracias, agradezco cualquier ayuda.

 class Repairs extends React.Component { constructor(props) { super(props); this.state = { sortedDataList: [] }; } componentWillReceiveProps(nextProps) { if(this.props != nextProps) { this.setState({ sortedDataList: this.props.repairs }); } } render() { console.log(this.props); console.log(this.state); return ( <div></div> ); } }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

¡No importa, encontré mi tonto error! Si alguien más se atasca en esto en el futuro...

 componentWillReceiveProps(nextProps) { if(this.props != nextProps) { this.setState({ sortedDataList: nextProps.repairs }); } }
over 4 years ago · Santiago Trujillo Denunciar

0

componentWillReceiveProps no se llama en el primer renderizado. Esa es la razón por la que no ve ninguna actualización en el estado.

De React Docs :

"Se invoca cuando un componente recibe nuevos accesorios. Este método no se llama para el renderizado inicial".

Si desea realizar el cambio solo la primera vez, puede utilizar la función de ciclo de vida de componentWillMount y actualizar el estado. En los cambios posteriores, se llamará a su componenteWillReceiveProps.

 class Repairs extends React.Component { constructor(props) { super(props); this.state = { sortedDataList: [] }; } componentWillMount() { this.setState({ sortedDataList: this.props.repairs }, () => console.log(this.state.sortedDataList)); } componentWillReceiveProps(nextProps) { if(this.props != nextProps) { this.setState({ sortedDataList: nextProps.repairs }); } } render() { console.log("r",this.props); console.log("r",this.state); return ( <div></div> ); } } class App extends React.Component { render() { var arr = ["1", "2", "3"]; return ( <div > <Repairs repairs={arr}/> </div> ) } } ReactDOM.render(<App/>, document.getElementById('app'));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script> <div id="app"></div>

over 4 years ago · Santiago Trujillo Denunciar

0

En tu constructor

 this.state = { sortedDataList: [] };

Inicialmente establece el estado en una matriz vacía, por lo que en el primer renderizado estará vacío. Luego, cada vez que se cambien los accesorios, se actualizará a través de componentWillReceiveProps().

Como dijo Shubham, no se llama al componenteWillReceiveProps() en el primer renderizado. Si desea que el estado refleje los accesorios directamente desde el primer renderizado, debe colocarlo en el constructor de la siguiente manera:

 this.state = { sortedDataList: this.props.repair };
over 4 years ago · Santiago Trujillo 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