Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

162
Visualizações
El método de instancia de clase Javascript no funciona con el evento de devolución de llamada onClick en reaccionar

Estaba tratando de actualizar mi variable de estado cuando se hace clic en el botón en mi página. Pero veo que no puedo usar los métodos de componentes de la clase de reacción. Aquí está el ejemplo mínimo reproducible.

 import React, { Component } from 'react' export class Name extends Component { constructor(){ super(); this.state = { name : "Farhan Ahmed" } } clickMe() { this.setState({ name:"Ahmed Farhan" }) } render() { return ( <div> <h1>{this.state.name}</h1> <button className="btn btn-success" onClick={this.clickMe}>Change Text</button> </div> ) } } export default Name

Error :

 TypeError: Cannot read properties of undefined (reading 'setState')

Pero cuando reemplazo lo mismo con la función de flecha, funciona para mí.

Mi pregunta es por qué no funcionó el método de clase regular en este caso, ¿por qué necesito reemplazarlo con la función de flecha?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

No se hace clic en el botón, pero la función se ejecutará mientras se procesa el componente.

 onClick={this.clickMe}

Y esto;

 onClick={() => this.clickMe}

La función solo funciona cuando se hace clic en los botones.

Lea esto: https://beta.reactjs.org/learn/responding-to-events

about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando intenta acceder a this palabra clave sin vincular la función, this palabra clave no está definida. por lo tanto, debe vincular esa función en el constructor o usar una sintaxis de función de flecha que garantice this esté vinculada dentro de esa función. Puede consultar la documentación del método de vinculación y la función de flecha

about 4 years ago · Juan Pablo Isaza Relatório

0

En los documentos que se encuentran aquí https://reactjs.org/docs/handling-events.html se explica este error, junto con las posibles soluciones. Si no está utilizando la "sintaxis de campos de clase pública" experimental a la que se refieren los documentos, puede bind su función o usar una función de flecha:

con enlace

onClick={this.clickMe.bind(this)}

Función de flecha

onClick={() => this.clickMe()}

Estos son los más comunes (que he visto personalmente), pero los documentos también brindan más soluciones.

Editar

Alguien señaló que OP está preguntando "por qué", no necesariamente "¿cómo lo soluciono?" Entonces, de los documentos vinculados anteriormente:

Debe tener cuidado con el significado de this en las devoluciones de llamada JSX. En JavaScript, los métodos de clase no están vinculados de forma predeterminada. Si olvida enlazar this.handleClick y pasarlo a onClick , this estará definido cuando se llame a la función.

Este no es un comportamiento específico de React; es una parte de cómo funcionan las funciones en JavaScript. Por lo general, si hace referencia a un método sin () después, como onClick={this.handleClick} , debe vincular ese método.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda