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.
react
12 mai 2023
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.