durante a aula, usamos o seguinte método para exlcuir um restaurante e atualizar a lista de restaurantes
const URL = 'http://localhost:8000/api/v2/restaurantes/'
const [restaurantes, setRestaurantes] = useState<IRestaurante[]>([])
useEffect(() => {
axios.get(URL)
.then((resposta) => {
setRestaurantes(resposta.data)
}).catch((erro) => {
console.log(erro)
});
}, [])
const excluirRestaurante = (restauranteParaExcluir: IRestaurante) => {
axios.delete(`${URL}${restauranteParaExcluir.id}/`)
.then(() => {
const listaRestaurantes = restaurantes.filter(restaurante => restaurante.id !== restauranteParaExcluir.id)
setRestaurantes([...listaRestaurantes])
})
});
}
fiquei com uma dúvida sobre como o useEffect pode ser usado aqui.
sempre vamos precisar atualizar a lista de restaurantes com:
const listaRestaurantes = restaurantes.filter(restaurante => restaurante.id !== restauranteParaExcluir.id)
setRestaurantes([...listaRestaurantes])
ou existe outra forma de atualizarmos essa lista? passando a lista de restaurantes para dentro do useEffect, algo como (não sei se essa seria a melhor maneira):
useEffect(() => {
axios.get(URL)
.then((resposta) => {
setRestaurantes(resposta.data)
}).catch((erro) => {
console.log(erro)
});
}, [restaurantes])
const excluirRestaurante = (restauranteParaExcluir: IRestaurante) => {
axios.delete(`${URL}${restauranteParaExcluir.id}/`)
.then((resposta) => {
alert(`Restaurante ${restauranteParaExcluir.nome} excluído com sucesso!`)
}).catch((erro) => {
console.log(erro)
});
}
pergunto isso porque estou pensando em um ambiente onde tenha milhares de restaurantes cadastrados (algo como o iFood). Ficar passando um .filter() e depois passar toda essa lista para dentro de uma nova variável teria algum impacto negativo de performace no frontend?
sempre fico me perguntando quando vou escrever algum código, se essa base tivesse um milhão de registros essa solução funcionaria?
Sei que essa pergunta foge um pouco do cardápio principal da aula (hahaha), mas agradeço por sempre oferecerem suporte, até quando saímos do script! Obrigado e espero não ter dado muita indigestão com essa dúvida diferente.