Lädt...


🔧 Evitando Re-renderizações Desnecessárias em React com Múltiplos Estados


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

É comum utilizar estados para controlar diferentes parte da interface. No entanto, se não forem bem gerenciados, múltiplos estados porem causar re-renderizações desnecessárias, afetando a performance do sistema.

Problema: Muitos estados === Muitas re-renderizações

Vamos imaginar que estamos com um componente que gerencia os dados de um usuário. Podemos declarar esses estados de forma independente, assim:

const UserComponent = () => {
  const [name, setName] = useState('');
  const [age, setAge] = useState(0);
  const [address, setAddress] = useState('');
  const [email, setEmail] = useState('');
  const [phone, setPhone] = useState('');
  const [occupation, setOccupation] = useState('');

  // Funções de atualização dos estados
  const updateName = (newName) => setName(newName);
  const updateAge = (newAge) => setAge(newAge);
  // e assim por diante...

  return (
    ...
  );
};

Aqui a gente tem 6 estados independentes, cada vez que um desses estados é atualizado, o componente inteiro é re-renderizado, agora imagine que precisamos fazer atualização dos 6 estados... sim, a gente renderiza esse componente 6 vezes.

Solução: Criar somente 1 estado referente as informações do usuário

Uma forma de mitigar esse problema é consolidar todos os estados em um único objeto. Ao invés de ter estados separados, podemos manter todas as informações do usuário em um só estado, ficaria assim:

const UserComponent = () => {
  const [user, setUser] = useState({
    name: '',
    age: 0,
    address: '',
    email: '',
    phone: '',
    occupation: ''
  });

  // Função para atualizar o estado do usuário
  const updateUser = (newData) => {
    setUser((prevState) => ({
      ...prevUser,
      ...newData,
    }));
  };

  return (
    ...
  );
};

Agora, ao invés de ter uma função para cada estado, temos a função updateUser, que recebe apenas as mudanças desejadas e junta com o estado anterior utilizando o spread operator (...). Isso permite atualizar apenas uma parte do estado, enquanto o restante permanece inalterado.

Se desejas alterar apenas 1 informação do objeto, você faz assim:

setUser((prevState) => ({...prevState, age: 25}))

Diferença

Quando usamos estados separados, cada mudança de estado individual causa uma re-renderização do componente. Quando consolidamos todos os estados em um único objeto, ainda temos uma única re-renderização, mas ela ocorre apenas uma vez, mesmo que várias partes do objeto sejam alteradas.

Vantagens

- Redução de Re-renderizações: Consolidando estados, evitamos múltiplas re-renderizações desnecessárias, melhorando a performance.
- Manutenção Facilitada: Fica mais fácil gerenciar as informações do usuário em um único estado, simplificando o código e tornando-o mais legível.
- Atualizações Parcialmente Controladas: Podemos alterar apenas as partes do estado que precisam ser modificadas, sem mexer no resto.

É isso! Espero ter ajudado!!!
Apesar de que ainda estou desenvolvendo, mas ai vai o meu portfólio: https://lucaslima.vercel.app (espero que quando você acesse já esteja pronto hahhaha)

Sucesso! 🚀

...

🔧 Redux: Estados Globales en React


📈 35.3 Punkte
🔧 Programmierung

🔧 Gerenciamento de estados da Api React - Rails


📈 35.3 Punkte
🔧 Programmierung

🔧 Multiplos retornos no Flutter/DART com os Records


📈 34.7 Punkte
🔧 Programmierung

🔧 Evitando conversão implícita no Sql Server com Python usando o módulo pyodbc


📈 32.65 Punkte
🔧 Programmierung

🔧 Evitando SQL Injection com Golang


📈 32.65 Punkte
🔧 Programmierung

🔧 Contabilidad para Django Developers: Implementando Estados Financieros


📈 29.3 Punkte
🔧 Programmierung

🔧 Maquina de estados


📈 29.3 Punkte
🔧 Programmierung

🔧 This Week In React #185: React Conf, React Query, refs, Next.js after, mini-react...


📈 24 Punkte
🔧 Programmierung

🔧 This Week In React #185: React Conf, React Query, refs, Next.js after, mini-react...


📈 24 Punkte
🔧 Programmierung

🔧 Building CRUD App with react-form, zod, react data grid, react-query and json-server


📈 18 Punkte
🔧 Programmierung

🔧 Navigating with React Router React Js Part 4: A Guide to Routing in React Applications


📈 18 Punkte
🔧 Programmierung

🔧 Dynamic Manipulation of Children in React JSX with React.cloneElement and React.Children.map


📈 18 Punkte
🔧 Programmierung

🔧 Handling React OTP Input Auth Web | React Native using react-otp-kit package


📈 18 Punkte
🔧 Programmierung

🔧 Handling React OTP Input Auth Web | React Native using react-otp-kit package


📈 18 Punkte
🔧 Programmierung

🔧 What’s New in React 19? React Canaries, Actions, and React Compiler


📈 18 Punkte
🔧 Programmierung

🔧 How to build a website using React and Rest APIs (React basics explained)


📈 12 Punkte
🔧 Programmierung

🔧 React CRUD Operations with Axios and React Query


📈 12 Punkte
🔧 Programmierung

🔧 React: Understanding React's Event System


📈 12 Punkte
🔧 Programmierung

🔧 React TypeScript - Vite + React


📈 12 Punkte
🔧 Programmierung

🔧 Build complex PDFs using React: react-print-pdf


📈 12 Punkte
🔧 Programmierung

🔧 How to Add Typing Effects to Your React App with React Typical


📈 12 Punkte
🔧 Programmierung

🔧 React 19 Launches with Game-Changing React Compiler: What Does This Mean for Your Apps?


📈 12 Punkte
🔧 Programmierung

🔧 Building a Modern Document Website for React Native Library Like React Native ECharts


📈 12 Punkte
🔧 Programmierung

🔧 The State of React Native Tooling (React Native CLI - The Ultimate Guide)


📈 12 Punkte
🔧 Programmierung

🔧 React with TypeScript: Advanced Techniques (Compatible with React 19) 🚀


📈 12 Punkte
🔧 Programmierung

📰 heise-Angebot: enterJS React 19 Day: Workshop zu den neuen React-Features


📈 12 Punkte
📰 IT Nachrichten

matomo