Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Porque usar ([...restaurante])?

Porque usar setRestaurantes([...listaRestaurante]) ao inves de usar direto o setRestaurantes(listaRestaurante)?

const excluir = (restauranteASerExcluido: IRestaurante) => {
    axios.delete(`http://localhost:8000/api/v2/restaurantes/${restauranteASerExcluido.id}/`)
      .then(() => {
        const listaRestaurante = restaurantes.filter(restaurante => restaurante.id !== restauranteASerExcluido.id);
        console.log(listaRestaurante); // aqui a lista diminui
        setRestaurantes([...listaRestaurante]);
        console.log('*************'); 
        console.log(restaurantes); // aqui o item ainda consta no console.log
      })
  }

Tem alguma coisa a ver com memoria, nao? Agradeco antecipadamente.

2 respostas
solução!

Olá, Edifran!

A função setRestaurantes é utilizada para atualizar o estado da lista de restaurantes que está sendo exibida na tela. Quando utilizamos setRestaurantes(listaRestaurante), estamos simplesmente atualizando o estado com a lista de restaurantes filtrada, ou seja, estamos substituindo o valor anterior pelo novo valor.

Já quando utilizamos setRestaurantes([...listaRestaurante]), estamos criando um novo array com os elementos da lista de restaurantes filtrada e atualizando o estado com esse novo array. Isso é necessário porque o React compara o estado anterior com o novo estado para determinar se precisa ou não atualizar a tela. Se utilizarmos o mesmo array, mesmo que os elementos tenham sido modificados, o React não detectará a mudança e não atualizará a tela.

Espero ter ajudado e bons estudos!

Otima dica professor! Muito obrigado pela atencao!