1
resposta

setState Assincrono

Olá professor.

Estava vendo o código do vídeo em que você remove o autor usando como referência o state "fora do setState".

removeAutor = (index) =>{
  const { autores } = this.state;

  this.setState({
      autores : autores.filter((autor, posAtual) => posAtual !== index),
    });
} 

Porém, todavia, contanto, a documentação do React diz que o setState pode ser assíncrono, isto é, o estado da const autores pode não ter sido atualizada se um setState anterior não tiver sido concluído.

Fica a sugestão de num futuro momento atualizar o vídeo, ou colocar uma observação, sugerindo a utilização de uma segunda forma do setState que recebe uma função, ao invés de um objeto, com parâmetro:

removeAutor = index => {
    this.setState((state, props) => {
      return {
        autores: state.autores.filter((autor, posAtual) => posAtual !== index)
      };
    });
  };

Aqui tem mais informações sobre o assunto: https://pt-br.reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous

1 resposta

Boa noite, Leonardo! Como vai?

Obrigado pela sugestão! Irei criar uma atividade "para saber mais" e colocar no curso! É com participações como essa sua que fazemos da Alura uma plataforma cada vez melhor! Continue assim!

Grande abraço e bons estudos, meu aluno!