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

390
Visualizações
Dónde declarar la variable en reaccionar js

Estoy tratando de declarar una variable en una clase react-js. La variable debe ser accesible en diferentes funciones. este es mi codigo

 class MyContainer extends Component { constructor(props) { super(props); this.testVariable= "this is a test"; // I declare the variable here } onMove() { console.log(this.testVariable); //I try to access it here } }

En onMove, el valor de this.testVariable no está definido. Sé que podría poner el valor en el estado, pero no quiero hacerlo porque cada vez que cambia el valor, se llamará a render() , lo cual no es necesario. Soy nuevo en reaccionar, hice algo mal?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

El uso de la sintaxis de ES6 en React no vincula this a las funciones definidas por el usuario; sin embargo, this vinculará a los métodos del ciclo de vida del componente.

Entonces, la función que declaró no tendrá el mismo contexto que la clase y tratar de acceder a this no le dará lo que espera.

Para obtener el contexto de la clase, debe vincular el contexto de la clase a la función o usar funciones de flecha.

Método 1 para vincular el contexto:

 class MyContainer extends Component { constructor(props) { super(props); this.onMove = this.onMove.bind(this); this.testVarible= "this is a test"; } onMove() { console.log(this.testVarible); } }

Método 2 para vincular el contexto:

 class MyContainer extends Component { constructor(props) { super(props); this.testVarible= "this is a test"; } onMove = () => { console.log(this.testVarible); } }

El método 2 es mi forma preferida, pero eres libre de elegir la tuya.

Actualización: también puede crear las propiedades en la clase sin constructor:

 class MyContainer extends Component { testVarible= "this is a test"; onMove = () => { console.log(this.testVarible); } }

Nota Si también desea actualizar la vista, debe usar el método state y setState cuando establezca o cambie el valor.

Ejemplo:

 class MyContainer extends Component { state = { testVarible: "this is a test" }; onMove = () => { console.log(this.state.testVarible); this.setState({ testVarible: "new value" }); } }
over 4 years ago · Santiago Trujillo Relatório

0

Suponiendo que onMove es un controlador de eventos, es probable que su contexto sea diferente a la instancia de MyContainer , es decir, this apunta a algo diferente.

Puede vincular manualmente el contexto de la función durante la construcción de la instancia a través Function.bind :

 class MyContainer extends Component { constructor(props) { super(props); this.onMove = this.onMove.bind(this); this.test = "this is a test"; } onMove() { console.log(this.test); } }

Además, test !== testVariable .

over 4 years ago · Santiago Trujillo 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