1
resposta

Por que utilizar o useEffect no filtro e busca?

Por que devemos utilizar o useEffect?

Compreendo que ele é utilizado para observar variáveis e rodar funções caso elas mudem.

No curso utilizamos:

    useEffect(() => {
        const novaLista = cardapio.filter(
            (item) => testaBusca(item.title) && testaFiltro(item.category.id)
        );
        setLista(novaLista);
    }, [busca, filtro]);

Porém o mesmo efeito não seria alcançável se utilizarmos a função filter direto no JSX?

return (
        <div className={styles.itens}>
            {lista
                .filter((item) => testaBusca(item.title) && testaFiltro(item.category.id))
                .map((item) => (
                    <div>
                        <Item key={item.id} {...item} />
                    </div>
                ))}
        </div>
    );

Eu testei na minha máquina, e o resultado foi o mesmo de utilizar o useEffect, então existe algum outro motivo especifico para estarmos utilizando-o no projeto da aula?

1 resposta

Olá, Richard! Tudo bom?

Ótima pergunta!

A diferença de usar o useEffect() ou passar direto o filter no nosso estado é que o useEffect() controla essas renderizações. Ele renderiza uma vez ao iniciar a aplicação e depois ele vai renderizar apenas se busca ou filtro mudarem seus estados. Enquanto que passando direto na lista você não garante isso, fazendo com que sua aplicação renderize mais vezes de forma desnecessária.

Em caso de dúvidas eu recomendo ler a documentação do React.

Abração!