Published

Gerenciamento de Sessão de Usuário usando Redux

Authors

Anteriormente abordamos de forma resumida as opções de gerenciamento de estado em React. Hoje será o Redux.

O que é o Redux?

O Redux é uma biblioteca popular de gerenciamento de estado para aplicações JavaScript, especialmente utilizada em conjunto com React, mas não limitada a ele. Foi criada por Dan Abramov e Andrew Clark. O principal objetivo do Redux é oferecer uma forma previsível de gerenciar o estado da aplicação, facilitando o rastreamento de mudanças e a manutenção do código.

Princípios Fundamentais do Redux:

  • Única Fonte da Verdade: O estado de toda a aplicação é armazenado em um único objeto de store. Isso facilita o gerenciamento do estado e a depuração.

  • Estado é Somente Leitura: O estado não pode ser alterado diretamente. Mudanças no estado são realizadas através de ações puras, chamadas de "actions", que são objetos descrevendo o que aconteceu.

  • Mudanças Feitas com Funções Puras: Para especificar como o estado é transformado pelas actions, você usa funções puras chamadas "reducers". Um reducer é uma função que recebe o estado atual e uma action como argumentos, e retorna um novo estado.

Gerenciamento de Sessão de Usuário com Redux:

Um exemplo prático do uso do Redux é no gerenciamento de sessões de usuários em aplicações web. As actions podem incluir login, logout e atualização de dados do usuário. Os reducers correspondem a essas actions para atualizar o estado da sessão na store.

  • Actions: São objetos JavaScript que contêm informações sobre uma ação que deve acontecer. Elas são o único meio de enviar dados para a store.
const loginSuccess = (user) => ({ type: 'LOGIN_SUCCESS', payload: user })
const logout = () => ({ type: 'LOGOUT' })
  • Reducers: São funções puras que tomam o estado anterior e uma action, e retornam o novo estado. Eles descrevem como o estado é atualizado em resposta a actions enviadas para a store.
const sessionReducer = (state = { user: null, isAuthenticated: false }, action) => {
  switch (action.type) {
    case 'LOGIN_SUCCESS':
      return { ...state, isAuthenticated: true, user: action.payload }
    case 'LOGOUT':
      return { ...state, isAuthenticated: false, user: null }
    default:
      return state
  }
}
  • Store: É o objeto onde o estado da aplicação é armazenado. A store tem métodos para permitir o acesso ao estado, despachar actions e registrar listeners.
import { createStore } from 'redux'
import sessionReducer from './sessionReducer'

const store = createStore(sessionReducer)

export default store

Uso com React:

No contexto do React, o Redux facilita o gerenciamento de estados que são compartilhados por muitos componentes, especialmente em aplicações grandes e complexas. Ele permite que o estado seja mantido fora dos componentes, tornando-os mais leves e focados apenas na interface do usuário. Isso também melhora a testabilidade e a escalabilidade da aplicação.

Por Que Usar Redux?

  • Previsibilidade do Estado: Com regras estritas sobre como e quando as atualizações podem acontecer, é mais fácil entender o fluxo de dados e a lógica da aplicação.

  • Manutenção e Escalabilidade: O Redux oferece uma estrutura que ajuda a organizar o código e torna mais fácil escalar a aplicação.

  • Ferramentas de Desenvolvedor: Inclui ferramentas poderosas, como o Redux DevTools, para rastrear, registrar e inspecionar todos os estados e ações.

  • Comunidade e Ecossistema: Redux tem uma grande comunidade, o que significa muitos recursos, middleware e extensões disponíveis.

Embora o Redux seja uma ferramenta poderosa, ele não é necessário para todas as aplicações React. É mais útil em aplicações com lógica de estado complexa e em que muitos estados são compartilhados entre diferentes componentes.

Não esqueça de me seguir no Twitter ou LinkedIn pra saber de todos os novos artigos ou insights.