Tenho uma dúvida sobre quando utilizar o useMemo, estou trabalhando em um componente muito similar ao do curso, com filtros busca e ordens
a questão é que quando eu digito uma letra por exemplo no input, o componente todo re-renderiza, inclusive o título do componente, que é mostrado piscando na print abaixo, isso me incomoda
Colocando esse título (tag h2) em uma variável com o useMemo, eu consigo evitar isso de acontecer, e o título não é renderizado mais de uma vez visto que ele nunca muda, mas isso é necessário? não sei se isso já e o exagero ou se ainda é um ganho de perfomance
Estou perguntando isso pois achei estranho que no componente visto em aula o título não pisca assim, apenas a seção toda pisca.
Agradeço se alguém conseguir esclarecer pra mim por favor :)
Componente:
Código
import Cards from "./Cards.tsx";
import Categorys from "./Categorys.tsx";
import Orders from "./Orders";
function SearchFilter() {
const { display } = useToggleDisplayState();
const [searchBarStatus, setSearchBarStatus] = useState("");
const [categoryStatus, setCategoryStatus] = useState("");
const [orderStatus, setOrderStatus] = useState("");
return (
<>
{display ? (
<NewWrapper>
<NewContainer>
<Titulo>
SearchFilter
<Link id="secao7"></Link>
</Titulo>
<SearchBar
type="text"
placeholder="Nome do personagem"
onChange={(event) => setSearchBarStatus(event.target.value)}
value={searchBarStatus}
></SearchBar>
<Categorys categoryStatus={categoryStatus} setCategoryStatus={setCategoryStatus}/>
<Orders orderStatus={orderStatus} setOrderStatus={setOrderStatus}/>
<Cards categoryStatus={categoryStatus} orderStatus={orderStatus} searchBarStatus={searchBarStatus}/>
</NewContainer>
</NewWrapper>
) : null}
</>
);
}
export default SearchFilter;