Skip to content

Instantly share code, notes, and snippets.

@programadorEmerson
Last active June 24, 2023 22:45
Show Gist options
  • Save programadorEmerson/7bd6ac719d482ac92b8ccb01b19bdbc2 to your computer and use it in GitHub Desktop.
Save programadorEmerson/7bd6ac719d482ac92b8ccb01b19bdbc2 to your computer and use it in GitHub Desktop.

Revisions

  1. programadorEmerson revised this gist Feb 13, 2023. No changes.
  2. programadorEmerson revised this gist Feb 13, 2023. 1 changed file with 0 additions and 144 deletions.
    144 changes: 0 additions & 144 deletions Checklist Redux
    Original file line number Diff line number Diff line change
    @@ -1,144 +0,0 @@
    # Checklist do 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;
    - [ ] npm install --save @redux-devtools/extension

    *Criar dentro do diretório `src`:*
    - [ ] diretório `redux`

    *Criar dentro do diretório `redux`*
    - [ ] arquivo `store.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 `redux/store.js`:*
    - [ ] importar o createStore
    - [ ] configurar o [Redux DevTools](https://github.com/reduxjs/redux-devtools)
    - [ ] importar o rootReducer
    - [ ] criar e exportar a store

    Exemplo:

    ```js
    import { legacy_createStore as createStore } from 'redux';
    import { composeWithDevTools } from '@redux-devtools/extension';
    import rootReducer from '../reducers';

    const store = createStore(rootReducer, composeWithDevTools());

    export default store;
    ```

    *Criar dentro do arquivo `redux/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:

    ```js
    import { combineReducers } from 'redux';

    const INITIAL_STATE = {};

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

    const rootReducer = combineReducers({ exampleReducer })

    export default rootReducer;
    ```

    *No arquivo `index.js`:*
    - [ ] importar a `store`
    - [ ] importar o `Provider`, para fornecer os estados a todos os componentes encapsulados pelo `<App />`

    Exemplo:

    ```js
    // Na importação
    import { Provider } from 'react-redux';
    import store from './redux/store'
    ```

    ```js
    // No render
    <Provider store={ store } >
    <App />
    </Provider>
    ```

    *Na pasta `actions/index.js`:*
    - [ ] criar e exportar os actionTypes

    Exemplo:

    ```js
    // ACTIONS TYPES
    export const ADD_EMAIL = 'ADD_EMAIL';
    ```

    - [ ] criar e export os actions creators necessários

    Exemplo:

    ```js
    // ACTIONS CREATORS
    export const addEmail = (email) => ({
    type: ADD_EMAIL,
    email,
    })
    ```

    *Nos reducers:*
    - [ ] criar os casos para cada action criada, retornando o devido estado atualizado

    *Nos componentes que irão ler o estado:*
    - [ ] criar a função `mapStateToProps`
    - [ ] exportar usando o `connect`

    ```js
    // No import
    import { connect } from 'react-redux';

    // Acesso ao estado global
    const mapStateToProps = (state) => ({
    email: state.email,
    });

    // No export
    export default connect(mapStateToProps)(Component)
    ```

    *Nos componentes que irão modificar o estado:*
    - [ ] Importar a action creator a ser utilizada
    - [ ] Desconstruir o dispatch via props
    - [ ] Utilizar a função dispatch para enviar a action ao reducer

    ```js
    // No import
    import { addEmail } from '../redux/actions';

    // Disparando a action
    const handleClick = () => {
    const { dispatch } = this.props;
    dispatch(addEmail('[email protected]'));
    }
    ```
  3. programadorEmerson revised this gist Feb 13, 2023. No changes.
  4. programadorEmerson created this gist Feb 13, 2023.
    144 changes: 144 additions & 0 deletions Checklist Redux
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,144 @@
    # Checklist do 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;
    - [ ] npm install --save @redux-devtools/extension

    *Criar dentro do diretório `src`:*
    - [ ] diretório `redux`

    *Criar dentro do diretório `redux`*
    - [ ] arquivo `store.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 `redux/store.js`:*
    - [ ] importar o createStore
    - [ ] configurar o [Redux DevTools](https://github.com/reduxjs/redux-devtools)
    - [ ] importar o rootReducer
    - [ ] criar e exportar a store

    Exemplo:

    ```js
    import { legacy_createStore as createStore } from 'redux';
    import { composeWithDevTools } from '@redux-devtools/extension';
    import rootReducer from '../reducers';

    const store = createStore(rootReducer, composeWithDevTools());

    export default store;
    ```

    *Criar dentro do arquivo `redux/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:

    ```js
    import { combineReducers } from 'redux';

    const INITIAL_STATE = {};

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

    const rootReducer = combineReducers({ exampleReducer })

    export default rootReducer;
    ```

    *No arquivo `index.js`:*
    - [ ] importar a `store`
    - [ ] importar o `Provider`, para fornecer os estados a todos os componentes encapsulados pelo `<App />`

    Exemplo:

    ```js
    // Na importação
    import { Provider } from 'react-redux';
    import store from './redux/store'
    ```

    ```js
    // No render
    <Provider store={ store } >
    <App />
    </Provider>
    ```

    *Na pasta `actions/index.js`:*
    - [ ] criar e exportar os actionTypes

    Exemplo:

    ```js
    // ACTIONS TYPES
    export const ADD_EMAIL = 'ADD_EMAIL';
    ```

    - [ ] criar e export os actions creators necessários

    Exemplo:

    ```js
    // ACTIONS CREATORS
    export const addEmail = (email) => ({
    type: ADD_EMAIL,
    email,
    })
    ```

    *Nos reducers:*
    - [ ] criar os casos para cada action criada, retornando o devido estado atualizado

    *Nos componentes que irão ler o estado:*
    - [ ] criar a função `mapStateToProps`
    - [ ] exportar usando o `connect`

    ```js
    // No import
    import { connect } from 'react-redux';

    // Acesso ao estado global
    const mapStateToProps = (state) => ({
    email: state.email,
    });

    // No export
    export default connect(mapStateToProps)(Component)
    ```

    *Nos componentes que irão modificar o estado:*
    - [ ] Importar a action creator a ser utilizada
    - [ ] Desconstruir o dispatch via props
    - [ ] Utilizar a função dispatch para enviar a action ao reducer

    ```js
    // No import
    import { addEmail } from '../redux/actions';

    // Disparando a action
    const handleClick = () => {
    const { dispatch } = this.props;
    dispatch(addEmail('[email protected]'));
    }
    ```