Redux toolkit - exemplo simples
Post

Redux toolkit - exemplo simples

Introdução

O gerenciamento de estado em aplicativos React pode se tornar complexo à medida que a aplicação cresce em tamanho e escopo. Redux, uma biblioteca popular para gerenciamento de estado, oferece uma solução robusta, mas a configuração inicial pode parecer um pouco verbosa.

Neste guia, exploraremos uma ferramenta que veio para simplificar drasticamente o uso do Redux: o Redux Toolkit. Essa biblioteca é uma adição oficial ao ecossistema Redux e foi projetada para tornar o desenvolvimento com Redux mais intuitivo, eficiente e livre de boilerplate.

Exemplo prático e simples de entender

Arquivo CounterSlice.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { count: 0 },
  reducers: {
    increment: (state) => {
      state.count += 1;
    },
    decrement: (state) => {
      state.count -= 1;
    },
  },
});

export const { increment, decrement } = counterSlice.actions;
export default counterSlice.reducer;

Arquivo store.js :

1
2
3
4
5
6
7
8
9
10
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

export default store;

Arquivo Counter.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from '../counterSlice';

const Counter = () => {
  const count = useSelector((state) => state.counter.count);
  const dispatch = useDispatch();

  return (
    <div>
      <h2>Contador: {count}</h2>
      <button onClick={() => dispatch(increment())}>Incrementar</button>
      <button onClick={() => dispatch(decrement())}>Decrementar</button>
    </div>
  );
};

export default Counter;

Arquivo App.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import React from 'react';
import { Provider } from 'react-redux';
import store from './store';
import Counter from './components/Counter';

function App() {
  return (
    <Provider store={store}>
      <div className="App">
        <Counter />
      </div>
    </Provider>
  );
}

export default App;