DEV Community

Emerson Vieira
Emerson Vieira

Posted on

6

Dicas rápidas - React para iniciantes

Hoje eu gostaria de chamar a atenção para uma má prática que muitas vezes passa despercebido e é até inocente, pois é algo da qual não paramos para pensar muitas vezes. O código a seguir parece estar tudo "ok", mas "esconde" uma armadilha que pode impactar na performance de nossa aplicação.

import React from "react";

class App extends React.Component {
  state = {
    name: "Dam Abramov",
    lastname: "Da Silva",
  };

  componentDidMount() {
    this.setState({
      name: "Emerson V",
    });
    this.setState({
      lastName: "De Almeida",
    });
  }

  render() {
    return (
      <div>
        <p> {this.state.name} </p>
         <p> {this.state.lastName} </p>
      </div>
    );
  }
}

export default App;
Enter fullscreen mode Exit fullscreen mode

No código acima, mais especificamente no componentDidMount é feito um setState para name e outro para lastName, até ai tudo bem, mas o problema "escondido" é que estamos chamando setState 2x e isso irá chamar o render novamente, nesse caso será chamado 2x. Ok, Emerson, até ai normal, é assim que o React se comporta mesmo, qual o problema disso?. O problema é que irá chamar o render 2x, mas podemos diminuir para 1x. Podemos evitar essa segunda chamada desnecessária com uma pequena modificação em nosso exemplo.

  componentDidMount() {
    this.setState({
      name: "Emerson V",
      lastName: "De Almeida",
    });
  }
Enter fullscreen mode Exit fullscreen mode

O ideal é sempre agrupar as mudanças de estado em apenas um único setState, assim evitando chamar o render novamente de maneira desnecessária.

essa foi a dica de hoje. Qualquer dúvida ou feedback é só comentar :)

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay