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

90
Vistas
Javascript React No se pueden leer las propiedades de nulo

Estoy tratando de tener una casilla de verificación que cambie dinámicamente un nombre de clase de otra etiqueta. Ahí está mi código:

 import "bootstrap/dist/css/bootstrap.min.css"; class Task extends Component { state = { task: "DevApp", }; isChecked = () => { console.log("True"); return true; }; render() { return ( <React.Fragment> <span className="bg-warning">{this.state.task}</span> <label> <input type="checkbox" id="myCheck" /> </label> <span className={this.getClassBadge()}>Done</span>] </React.Fragment> ); } getClassBadge() { var x = document.getElementById("myCheck").checked; if (x) { return "badge m-2 bg-warning"; } else { return "badge m-2 bg-primnary"; } } } export default Task;

Y obtengo TypeError: Cannot read properties of null (reading 'checked')

He intentado de esta manera:

 render() { return ( <React.Fragment> <span className="bg-warning">{this.state.task}</span> <label> <input type="checkbox" id="myCheck" /> </label> <span className={this.getClassBadge()}>Done</span>] </React.Fragment> <script> getClassBadge() { var x = document.getElementById("myCheck").checked; if (x) { return "badge m-2 bg-warning"; } else { return "badge m-2 bg-primnary"; } } </script> ); }

pero todo está subrayado en rojo. Me gustaría tener una casilla de verificación y, si la casilla de verificación está marcada, el nombre de clase del siguiente tramo cambiará para tener un efecto genial. ¿Puede alguien por favor ayudarme? Lo siento si es muy básico, pero solo estoy comenzando :)

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

0

El TypeError: Cannot read properties of null (reading 'checked') se debe a que cuando renderiza por primera vez, su casilla de verificación con esa identificación aún no está montada en el DOM. Por eso document.getElementById("myCheck") devuelve nulo.

La mayoría de las veces con React no deberías usar las funciones del objeto del documento.

En su lugar, debe usar el estado de React. Como está usando un componente de clase, puede usar this.state para tener una propiedad cuyo valor indica si la casilla de verificación está marcada o no. La casilla de verificación necesita un controlador de cambios, algo así como

<input type="checkbox" id="myCheck" onChange={(state) => this.setState({isChecked: !state.isChecked})} />

Luego, en getClassBadge , simplemente verifique el estado:

 return this.state.isChecked ? "badge m-2 bg-warning" : "badge m-2 bg-primnary"
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