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

188
Visualizações
¿Por qué la salida es diferente con React setState()?

no se porque

  • Cuando uso this.setState({count: count+1} clic varias veces solo actualizará el conteo una vez
  • Cuando uso this.setState({count: this.setState.count}) Cada clic actualiza el conteo
  • ¿Por qué diferente?
 class Demo extends React.Component { state = {count: 0}; render() { const {count} = this.state; return <button onClick={() => this.setState({count: count+1})}>count</button> } shouldComponentUpdate(){ return false; } }
  • Entorno react@16.8.4
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Porque sus alcances son diferentes.

this.setState({count: this.setState.count+1}) las acciones de carga state.count número y reasignación están en el mismo ámbito de evento onClick.

Pero la variable de count en this.setState({count: count+1}) se define en el alcance superior de render() y el evento onClick solo recibe el count como variable de nivel superior. Por lo tanto, la función render() solo se ejecuta una vez, por lo que count en render() solo se inicializa una vez (loading state.count solo una vez); cuando hace clic en el botón, solo se ejecutará el alcance del evento onClick (las acciones de reasignación se ejecutarán varias veces), en lugar del alcance render() . Es por eso que la variable de count en el evento onClick siempre será 0.

Hay un ejemplo simple equivalente a su caso:

 state={count:0} function upperLevel() { let {count} = state; function downlevel() { state = { count: count + 1 } console.log(state); } downlevel(); downlevel(); downlevel(); } upperLevel()

Si nos movemos let {count} = state; en downlevel() entonces el número aumentará.

 state = {count: 0} function upperLevel() { //let {count} = state; function downlevel() { let {count} = state; state = {count: count + 1 } console.log(state); } downlevel(); downlevel(); downlevel(); } upperLevel()

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