Coder Social home page Coder Social logo

estudo-redux's Introduction

Partes importantes do redux:

  • Store Responsável por armazenar os dados que serão utilizados no projeto (Por recomendação, deve-se ter apenas UM deles por projeto). Se comparado com a API de Contexto, seria o local onde os states ficam armazenados.

  • Provider Será responsável por disponibilizar os dados da store, ele que sinaliza os locais que terão acesso.

  • Reducer / Slice Encarregado de lidar/processar todas as ações que podem ser realizadas com um determinado dado da store. Idealmente cada dado deve ser seu próprio reducer.

  • Actions / Dispatch São as ações específicas que podem ser realizadas, por exemplo, uma "action de trocar nome". Obs.: As actions em si não fazem NADA além de mandar o dado para o reducer.

  • Selector Responsável por pegar os dados que estão na store.


Criando o Redux: OBS.: É necessário instalar o redux, react-redux e @reduxjs/toolkit - Dentro do /src, deve-se criar um arquivo redux - Dentro da pasta redux, crio uma pasta com o nome reducers que será responsável por armazenar os reducers do projeto

Para criar o reducer, será necessário:
    - Importar o `createSlice` do @reduxjs/toolkit
    - Instanciar essa importação
        Ex.: const slice = createSlice()
    - Nesse instânciamento, dentro dele será necessário passar um objeto, que conterá as informações: `name`, `initialState`, `reducers`
    - Após a criação desse instânciamento, devo fazer a exportação default do reducer dele (export default slice.reducer)
    -Também faço a exportação dos actions que eu desejar (export const {} = slice.actions)

Criando a Store:
    - Dentro da pasta `redux`, devo criar um arquivo com o nome `store` (o formato pode ser o js ou ts)
    - No arquivo, devo fazer a importação do `configureStore` do `@reduxjs/toolkit`
    - Após isso, devo fazer o instânciamento dessa `configure`
    - Dentro dele, devo colocar um objeto com a propriedade `reducer` que, dentro dele, será outro objeto com todos os reducers que existirem no projeto (uso a propriedade, dando o nome dele e coloco o reducer nele). Será necessário fazer a importação do reducer no arquivo.
        Obs.: Existe um detalhe de exportação de tipos, caso o Typescript esteja sendo utilizado, está adicionado o código no store desse repositório, com a explicação.

Criando o Provider:
    - Após a criação da store, deve-se ir no index do projeto
    - importar o `Provider` do `react-redux` e o import do `store`
    - Após isso, devo "encapsular" a <Main> no <Provider>
    - O <Provider> terá uma props `store` que recebe a própria store importada
        <Provider store={store}>

Utilizando os dados do Reducer No react-redux existe um hook para pegar as informações do reducer (useSelector) Será necessário a importação desse hook nos locais que eu desejar ter acesso a alguma informação. - Após a importação, dentro do component, devo utilizar o useSelector, ele recebe uma callback que recebe como parâmetro um state e vai retornar o reducer que eu desejar. - Depois de fazer esse processo, basta utilizar o acesso da variável que eu tiver declarado que ela vai possuir os dados que eu desejava.

Alterando os dados do Reducer para fazer isso, será necessário a importação do useDispatch do react-redux - O useDispatch deve ser instânciado, para ser utilizado como função ao longo dos locais desejados. - Também será necessário fazer o import das actions existentes no reducer(lembrar que elas ficam marcadas para exportação, dentro do arquivo do reducer) - O dispatch será uma função que recebe uma callback, sendo essa callback a action que eu desejar/tiver feito a importação.

estudo-redux's People

Contributors

alex-yudi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.