"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > React Basics ~ Desempenho de renderização/ useTransition

React Basics ~ Desempenho de renderização/ useTransition

Publicado em 2024-11-08
Navegar:898
  • Suponha que estejamos exibindo um grande número de dados, como 10 mil dados, muitas vezes há um atraso na colocação do próximo valor no campo de entrada.

  • Neste caso, quando inserimos um valor, a tela exibe os dados filtrados.

  • Mas então, um problema que ocorre é o atraso na exibição da próxima ação, como inserir o próximo valor no campo de entrada, devido ao tratamento de muitos dados.

・src/Example.js

import { useState } from "react";

const generateDummyItem = (num) => {
  return new Array(num).fill(null).map((item, index) => `item ${index}`);
};

const dummyItems = generateDummyItem(10000);

const Example = () => {
  const [filterVal, setFilterVal] = useState("");

  const changeHandler = (e) => {
      setFilterVal(e.target.value);
  };

  return (
    
      
      {isPending && 
Loading...
}
    {dummyItems .filter((item) => { if (filterVal === "") return true; return item.includes(filterVal); }) .map((item) => (
  • {item}
  • ))}
> ); }; export default Example;
  • Para resolver o problema, podemos agrupar a função setFilterVal com um startTransition.
  const changeHandler = (e) => {
    startTransition(() => {
      setFilterVal(e.target.value);
    })
  };
  • O startTransition faz com que uma função atrase para ser executada dentro dele.

  • Graças a esse recurso, podemos facilmente passar para o próximo valor no campo de entrada.

・Antes da entrada
React Basics~Render Performance/ useTransition

・Depois da entrada
React Basics~Render Performance/ useTransition

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/kkr0423/react-basicsrender-performance-usetransition-c7d?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3