Saltar al contenido

¿Cómo alternar el estado booleano del componente de reacción?

Solución:

Como nadie publicó esto, estoy publicando la respuesta correcta. Si la actualización de su nuevo estado depende del estado anterior, utilice siempre la forma funcional de setState que acepta como argumento una función que devuelve un nuevo estado.

En tu caso:

this.setState(prevState => ({
  check: !prevState.check
}));

Ver documentos


Dado que esta respuesta se está volviendo popular, agregando el enfoque que debería usarse para React Hooks (v16.8 +):

Si está utilizando el useState hook, luego use el siguiente código (en caso de que su nuevo estado dependa del estado anterior):

const [check, setCheck] = useState(false);
// ...
setCheck(prevCheck => !prevCheck);

Deberías usar this.state.check en lugar de check.value aquí:

this.setState({check: !this.state.check})

Pero de todos modos lo es mala práctica para hacerlo de esta manera. Es mucho mejor moverlo a un método separado y no escribir devoluciones de llamada directamente en el marcado.

Aquí hay un ejemplo usando ganchos (requiere React> = 16.8.0)

// import React, { useState } from 'react';
const { useState } = React;

function App() {
  const [checked, setChecked] = useState(false);
  const toggleChecked = () => setChecked(value => !value);
  return (
    <input
      type="checkbox"
      checked={checked}
      onChange={toggleChecked}
    />
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
<script crossorigin src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script>

<div id="root"><div>

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *