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

317
Vistas
Reaccionar setState + ¿De dónde viene 'prevState'?

Acabo de empezar a aprender React y JavaScript.
Mientras realizaba el tutorial, llegué a este código de ejemplo de un componente, que crea un botón de alternancia.
Esto es parte del código:

 class Toggle extends React.Component { constructor(props) { super(props); this.state = {isToggleOn: true}; this.handleClick = this.handleClick.bind(this); } handleClick() { this.setState(prevState => ({ // prevState? isToggleOn: !prevState.isToggleOn })); }

2 cosas que me están molestando aquí:

  1. ¿De dónde vino el argumento prevState ?
    No veo nada como var prevState = this.state; antes de llamarlo, y aún así, funciona.
  2. La sintaxis de la función flecha: ¿por qué los paréntesis después de la flecha?
    ¿Por qué la arg => { statement; } la sintaxis funciona aquí?

Perdón por las preguntas de novato...

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

  1. React proporciona prevState junto con props , los cuales son opcionales.

    • Actualización 13/04/19 : React ha cambiado la documentación de la función setState al cambiar el nombre de prevState a updater . La función de devolución de llamada aún toma dos argumentos; el state y las props en el momento en que se aplica el cambio.
  2. Los paréntesis permiten múltiples líneas en las que, si no usaste los paréntesis, te verías obligado a usar un return . Podría usar una sola línea, pero no necesita las llaves.

    • Actualización : olvidé mencionar un caso específico en el que se requiere tener paréntesis. Si está devolviendo un objeto sin una declaración de return , debe envolverlo entre paréntesis. Gracias @joedotnot por captar eso. Entonces () => {foo: true} generará un error porque parece una función y foo: true es una línea no válida. Para arreglar esto, debe verse como () => ({ foo: true })
over 4 years ago · Santiago Trujillo Denunciar

0

Uso esto. (Ejemplo)

 const [modal, setModal] = useState(false); const [dataAction, setDataAction] = useState({name: '', description: ''}); const _handleChangeName = (data) => { if(data.name) setDataAction( prevState => ({ ...prevState, name : data.name })); if(data.description) setDataAction( prevState => ({ ...prevState, description : data.description })); };
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