Logo

dev-resources.site

for different kinds of informations.

useState e useEffect

Published at
12/1/2024
Categories
usestate
Author
java2890
Categories
1 categories in total
usestate
open
Author
8 person written this
java2890
open
useState e useEffect

Vamos explorar o Módulo 11: React Avançado com um foco detalhado nos conceitos de Hooks em React (como useState e useEffect), além de como gerenciar eventos e propriedades em componentes React. Este módulo aborda tópicos que são essenciais para criar aplicações interativas e reativas em React.

1. Hooks em React

O que são Hooks?

Hooks são funções que permitem "ligar" o estado e outros recursos do React a componentes funcionais. Antes do React 16.8, apenas componentes de classe podiam ter estado e lidar com ciclos de vida. Com os hooks, agora você pode usar o estado e outros recursos do React sem escrever uma classe.

useState

O hook useState é o hook mais básico para adicionar estado a componentes funcionais. Ele retorna um array com dois valores:

  • O valor atual do estado.
  • A função que permite atualizar o valor do estado.

Sintaxe:

const [state, setState] = useState(initialState);
Enter fullscreen mode Exit fullscreen mode
  • state: o valor atual do estado.
  • setState: a função para atualizar o valor do estado.
  • initialState: valor inicial do estado.

Exemplo:

import React, { useState } from 'react';

function Counter() {
  // Declara um estado chamado 'count', com valor inicial 0
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • useState(0) inicializa o estado count com valor 0.
  • Quando o botão é clicado, a função setCount é chamada para atualizar o estado, o que faz o componente ser re-renderizado com o novo valor de count.
useEffect

O hook useEffect é usado para realizar efeitos colaterais em componentes funcionais. Efeitos colaterais podem ser qualquer coisa que afete o mundo fora do componente, como buscar dados em uma API, atualizar o DOM diretamente, ou configurar um temporizador.

Sintaxe:

useEffect(() => {
  // Código a ser executado após o componente renderizar
  return () => {
    // Função de limpeza (opcional) que será chamada quando o componente for desmontado
  };
}, [dependencies]);
Enter fullscreen mode Exit fullscreen mode
  • O primeiro argumento de useEffect é a função de efeito que será executada.
  • O segundo argumento é uma lista de dependências. O efeito só será executado se algum valor nesta lista mudar.
    • Se a lista estiver vazia ([]), o efeito será executado apenas uma vez, após a primeira renderização (semelhante ao componentDidMount nas classes).
    • Se a lista de dependências contiver variáveis, o efeito será executado sempre que essas variáveis mudarem.

Exemplo:

import React, { useState, useEffect } from 'react';

function FetchData() {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => {
        setData(data);
        setLoading(false);
      })
      .catch(error => console.error('Error fetching data:', error));
  }, []); // O efeito só executa uma vez quando o componente é montado

  if (loading) return <p>Loading...</p>;

  return (
    <div>
      <ul>
        {data.map(item => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • O useEffect faz a requisição de dados quando o componente é montado, apenas uma vez, devido à lista de dependências vazia ([]).
  • Quando os dados são carregados, o estado data é atualizado com os dados da API, e a tela é re-renderizada.

Comportamento de Limpeza no useEffect

Às vezes, você pode precisar limpar recursos quando um componente for desmontado ou quando o efeito for re-executado. Isso pode ser feito retornando uma função de limpeza dentro do useEffect.

Exemplo de limpeza:

useEffect(() => {
  const timer = setTimeout(() => {
    console.log('This will run after 1 second');
  }, 1000);

  // Função de limpeza
  return () => clearTimeout(timer);
}, []); // Esse efeito será chamado apenas uma vez, então a função de limpeza é executada quando o componente é desmontado
Enter fullscreen mode Exit fullscreen mode

2. Gerenciamento de Eventos e Propriedades

Eventos em React

No React, você pode gerenciar eventos usando as sintaxes de eventos do JavaScript com algumas modificações. Todos os eventos em React seguem uma convenção de nomenclatura camelCase (por exemplo, onClick, onChange).

Exemplo de Evento em React:

import React, { useState } from 'react';

function Button() {
  const [message, setMessage] = useState('');

  const handleClick = () => {
    setMessage('Botão clicado!');
  };

  return (
    <div>
      <button onClick={handleClick}>Clique aqui</button>
      <p>{message}</p>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • O evento onClick chama a função handleClick quando o botão é clicado.
  • setMessage atualiza o estado com a mensagem "Botão clicado!", e a renderização do componente é atualizada com o novo valor de message.

Propriedades em React

As propriedades (props) em React são um mecanismo de passagem de dados entre componentes. Elas permitem que você passe dados do componente pai para o componente filho.

Exemplo de Propriedade:

function Welcome(props) {
  return <h1>Hello, {props.name}!</h1>;
}

function App() {
  return <Welcome name="João" />;
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • O componente Welcome recebe props como argumento e acessa a propriedade name.
  • O componente App passa a propriedade name="João" para o componente Welcome, que a exibe como parte do conteúdo.

Prop Drilling

Prop drilling é o termo usado quando você precisa passar dados através de vários componentes intermediários até que o dado chegue no componente de destino. Isso pode tornar o código difícil de manter quando os dados precisam ser passados por vários níveis de componentes.

Exemplo de Prop Drilling:

function Parent() {
  const [name, setName] = useState('Alice');
  return <Child name={name} />;
}

function Child({ name }) {
  return <Grandchild name={name} />;
}

function Grandchild({ name }) {
  return <h1>Hello, {name}!</h1>;
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • O estado name é passado de Parent para Child e depois para Grandchild. Isso é um exemplo simples de prop drilling.

Resumo

  • useState: Permite adicionar estado a componentes funcionais.
  • useEffect: Permite realizar efeitos colaterais como requisições de API ou atualizações no DOM.
  • Eventos em React: Usados para responder a interações do usuário, como cliques e mudanças em campos de formulário.
  • Propriedades (props): São usadas para passar dados entre componentes em React.

Esses conceitos são fundamentais para construir aplicações interativas e dinâmicas com React. Se precisar de mais detalhes ou exemplos, posso continuar ajudando!

usestate Article's
30 articles in total
Favicon
useState e useEffect
Favicon
Mastering React's useState Hook: The Basics and Advanced Use Cases
Favicon
Understanding useState in TypeScript React
Favicon
A Beginner's Guide to useState in React
Favicon
Mastering React Hooks: useState and useEffect
Favicon
Managing State in react using different method, & understand batching
Favicon
Hooks Behind The Scenes 2, useState!!
Favicon
useState Hook Explained
Favicon
Exploring State Management in React: One-Way Data Binding, State Lift-Up, Prop Drilling, and Handling Complex States
Favicon
Diving into React.js
Favicon
What is useState?
Favicon
Avoiding Common useState() Mistakes in React
Favicon
Simplifying State Management in React with Zustand
Favicon
Having trouble with react component hooks...
Favicon
useState( )
Favicon
Create a modified useState hook to get previous value
Favicon
UseState why?
Favicon
Part 2 - Mastering the useState Hook
Favicon
Part 1 - Getting Started with React Hooks
Favicon
ugly useState
Favicon
Unlocking the Power of React Hooks
Favicon
Mastering 'useState' in React with TypeScript: 5 Different Use-Cases for 'useState'
Favicon
React.useRefの理解を含めるエクササイズ
Favicon
Toggle Feature for a Drop-down list on React using useState();
Favicon
useContext
Favicon
A Beginner's Guide to Using Fetch in React: Making Data Requests Made Easy
Favicon
Alterações de páginas de forma dinâmica com o UseState
Favicon
Stop using useState for everything
Favicon
useState: la caja de juguetes
Favicon
Detaylı React Hooks Kullanımı: useState

Featured ones: