Skip to content

Instantly share code, notes, and snippets.

@denisjo7
Forked from isaacbatst/checklist-redux.md
Last active November 19, 2021 19:45
Show Gist options
  • Save denisjo7/c609d04b69b15c95df1e7f353a13b6b4 to your computer and use it in GitHub Desktop.
Save denisjo7/c609d04b69b15c95df1e7f353a13b6b4 to your computer and use it in GitHub Desktop.

Checklist do react-redux

Antes de começar

  • pensar como será o formato do seu estado global
  • pensar quais actions serão necessárias na sua aplicação

Instalação

  • npx create-react-app my-app-redux;
  • npm install --save redux react-redux;

Criar dentro do diretório src:

  • diretório store

Criar dentro do diretório store

  • arquivo index.js
  • diretório actions
  • diretório reducers

Criar dentro do diretório actions:

  • arquivo index.js.

Criar dentro do diretório reducers:

  • arquivo index.js.

Criar dentro do arquivo reducers/index.js:

  • estado inicial
  • criar função reducer com switch retornando apenas a opção default
  • criar rootReducer usando o combineReducers
  • exportar rootReducer

exemplo:

const INITIAL_STATE = {};

const exampleReducer = (state = INITIAL_STATE, action) => {
 switch(action.type) {
   default:
    return state;
 }
}

const rootReducer = combineReducers({ exampleReducer })

No arquivo store/index.js:

  • importar rootReducer e usá-lo na criação da store
  • configurar o Redux DevTools
  • exportar a store

No arquivo App.js:

  • importar a store
  • definir o Provider, <Provider store={ store }>, para fornecer os estados a todos os componentes encapsulados em <App />.

Na pasta actions:

  • criar os actionTypes, por exemplo: const ADD_TO_CART = 'ADD_TO_CART';
  • criar os actions creators necessários

Nos componentes que irão ler o estado:

  • criar a função mapStateToProps
  • exportar usando o connect

Nos componentes que irão modificar o estado:

  • criar a função mapDispatchToProps
  • exportar usando o connect
export default connect(mapStateToProps, mapDispatchToProps)(Component)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment