DEV Community

Altencir Junior
Altencir Junior

Posted on

3

Utilizando o Redux no React Native num projeto real

O Redux é uma biblioteca de gerenciamento de estado que permite que os desenvolvedores gerenciem o estado de um aplicativo de maneira mais previsível e escalável. Com o Redux, é possível centralizar o estado em um único local e tornar as mudanças de estado previsíveis e fáceis de rastrear. Neste artigo, vamos explorar como usar o Redux em um projeto simples de contador no React Native.

Instalação do Redux no React Native -

Antes de começarmos a escrever código, precisamos instalar as dependências necessárias para usar o Redux no React Native. Para isso, vamos usar o npm para instalar o pacote redux e o pacote react-redux:

npm install --save redux react-redux
Enter fullscreen mode Exit fullscreen mode

Após a instalação das dependências, precisamos configurar o Redux em nosso aplicativo. Para fazer isso, crie um arquivo chamado store.js na raiz do seu projeto e adicione o seguinte código:

import { createStore } from 'redux';
import counterReducer from './reducers/counterReducer';

const store = createStore(counterReducer);

export default store;
Enter fullscreen mode Exit fullscreen mode

Este código cria uma instância do store do Redux, passando como argumento o counterReducer, que vamos criar em seguida. O store é o objeto que mantém o estado do nosso aplicativo.

Em seguida, crie um arquivo chamado counterReducer.js na pasta reducers do seu projeto e adicione o seguinte código:

const initialState = {
  count: 0,
};

const counterReducer = (state = initialState, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return { ...state, count: state.count + 1 };
    case 'DECREMENT':
      return { ...state, count: state.count - 1 };
    default:
      return state;
  }
};

export default counterReducer;
Enter fullscreen mode Exit fullscreen mode

Este código define o counterReducer, que é uma função que recebe um estado e uma ação e retorna um novo estado com base na ação. O initialState é o estado inicial do nosso aplicativo, que consiste em uma propriedade count inicializada como 0.

O counterReducer possui um switch que trata duas ações diferentes: INCREMENT e DECREMENT. Quando uma ação INCREMENT é despachada para o store, o counterReducer retorna um novo estado com a propriedade count incrementada em 1. Quando uma ação DECREMENT é despachada para o store, o counterReducer retorna um novo estado com a propriedade count decrementada em 1. Se uma ação desconhecida é despachada, o counterReducer retorna o estado atual.

Aplicando o contador ao Redux -

Agora que configuramos o Redux em nosso aplicativo, podemos usá-lo para criar um contador. Crie um novo arquivo chamado Counter.js na pasta components do seu projeto e adicione o seguinte código:

import React from 'react';
import { View, Text, Button } from 'react-native';
import { connect } from 'react-redux';

const Counter = (props) => {
  const { count, dispatch } = props;

  return (
    <View>
      <Text>Count: {count}</Text>
      <Button title="Increment" onPress={() => dispatch({ type: 'INCREMENT' })} />
      <Button title="Decrement" onPress={() => dispatch({ type: 'DECREMENT' })} />
</View>
);
};

const mapStateToProps = (state) => {
return {
count: state.count,
};
};

export default connect(mapStateToProps)(Counter);
Enter fullscreen mode Exit fullscreen mode

Este código cria um componente Counter que exibe o valor atual do contador e dois botões que despacham as ações INCREMENT e DECREMENT para o store.

O connect é uma função do react-redux que conecta o componente ao store. Ele recebe uma função mapStateToProps que mapeia o estado do store para as propriedades do componente. Neste caso, estamos mapeando a propriedade count do estado do store para a propriedade count do componente.

O dispatch é uma função do store que despacha uma ação para o store. Quando o usuário clica no botão "Increment", estamos despachando a ação { type: 'INCREMENT' } para o store. Quando o usuário clica no botão "Decrement", estamos despachando a ação { type: 'DECREMENT' } para o store.

Agora que implementamos o contador, podemos usá-lo em nosso aplicativo. Vamos criar um novo componente App.js que exibe o componente Counter:

import React from 'react';
import { View } from 'react-native';
import { Provider } from 'react-redux';
import Counter from './components/Counter';
import store from './store';

const App = () => {
  return (
    <Provider store={store}>
      <View>
        <Counter />
      </View>
    </Provider>
  );
};

export default App;
Enter fullscreen mode Exit fullscreen mode

Este código cria um componente App que envolve o componente Counter com o componente Provider do react-redux. O Provider é um componente de nível superior que fornece o store para todos os componentes abaixo dele na árvore de componentes.

Neste artigo, exploramos como usar o Redux em um projeto simples de contador no React Native. Configuramos o Redux em nosso aplicativo, implementamos o contador usando o Redux e o react-redux, e usamos o componente Provider para fornecer o store para todos os componentes do aplicativo. O Redux pode parecer um pouco complicado no início, mas pode ajudar muito na manutenção e escalabilidade do seu aplicativo, especialmente quando ele cresce em complexidade e tamanho.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay