Introdução ao Redux: como gerenciar o estado de sua aplicação React

Este artigo fornece uma introdução ao Redux, uma biblioteca popular para gerenciar o estado de aplicações React. Aprenda sobre actions, reducers, store e como conectar componentes para um gerenciamento de estado eficiente.

Introdução ao Redux: como gerenciar o estado de sua aplicação React

O Redux é uma biblioteca de gerenciamento de estado que se tornou muito popular na comunidade React.

Segue o padrão de arquitetura Flux, que ajuda a organizar o fluxo de dados unidirecional em uma aplicação.

Com o Redux, o estado da aplicação é armazenado em uma única fonte de verdade chamada "store".

Os componentes React podem acessar o estado do store e despachar ações para modificar esse estado.

Aqui estão os principais conceitos do Redux:

Actions

As actions são objetos simples que descrevem uma intenção de modificar o estado.

Elas contêm um tipo (string) e opcionalmente, dados adicionais.

Exemplo de uma action:

{
  type: 'ADD_TODO',
  payload: {
    id: 1,
    text: 'Fazer compras'
  }
}

Reducers

Os reducers são funções puras que especificam como o estado da aplicação é modificado em resposta a uma action.

Cada reducer é responsável por tratar um tipo de action específico e retorna uma nova cópia do estado atualizado.

Exemplo de um reducer:

const initialState = {
  todos: []
};

function todoReducer(state = initialState, action) {
  switch (action.type) {
    case 'ADD_TODO':
      return {
        ...state,
        todos: [...state.todos, action.payload]
      };
    case 'REMOVE_TODO':
      return {
        ...state,
        todos: state.todos.filter(todo => todo.id !== action.payload.id)
      };
    default:
      return state;
  }
}

Store

O store é o objeto central do Redux que mantém o estado da aplicação.

Ele possui três principais responsabilidades: manter o estado, permitir que os componentes acessem o estado e despachar ações para os reducers.

import { createStore } from 'redux';
import todoReducer from './reducers/todoReducer';

const store = createStore(todoReducer);

Dispatching Actions

Para modificar o estado da aplicação, os componentes React despacham ações para o store. Isso é feito usando o método dispatch.

import { useDispatch } from 'react-redux';

const dispatch = useDispatch();

dispatch({ type: 'ADD_TODO', payload: { id: 1, text: 'Fazer compras' } });

Conectando componentes ao Redux

Para que um componente React possa acessar o estado do Redux, ele precisa ser conectado ao store.

Isso é feito usando o componente connect do pacote react-redux.

import { connect } from 'react-redux';

function TodoList({ todos }) {
  // Renderiza a lista de todos
}

const mapStateToProps = state => ({
  todos: state.todos
});

export default connect(mapStateToProps)(TodoList);

Com essa configuração básica, seu componente TodoList terá acesso à propriedade todos, que contém o estado todos armazenado no Redux.

Conclusão

Essa foi uma introdução básica ao Redux e como gerenciar o estado de uma aplicação React usando Redux.

Existem outros conceitos avançados e recursos do Redux, como middlewares, ação assíncrona e a ferramenta de desenvolvedor Redux DevTools, que podem aprimorar ainda mais a experiência de gerenciamento de estado em suas aplicações.

É importante mencionar que o Redux é uma biblioteca poderosa, mas pode adicionar complexidade a projetos menores.

Portanto, é recomendado considerar a utilização do Redux quando o estado da aplicação se tornar mais complexo e difícil de gerenciar apenas com o React.