diff options
author | Adrián Oliva <adrian.oliva@cimat.mx> | 2023-05-17 10:50:12 -0600 |
---|---|---|
committer | Adrián Oliva <adrian.oliva@cimat.mx> | 2023-05-17 10:50:12 -0600 |
commit | f929e5156cb1941beb2f5329e7b9b8fae4c7691b (patch) | |
tree | f588c13de3e31d4eecfc1cbbe15d403fd46f42b2 /src/features/counter/counterSlice.js | |
parent | 17c1d3d2070ee0c060c3e71a9e5868f004b2b034 (diff) | |
download | ToDo-App-FE-f929e5156cb1941beb2f5329e7b9b8fae4c7691b.tar.gz ToDo-App-FE-f929e5156cb1941beb2f5329e7b9b8fae4c7691b.zip |
Modified to be minimal.
Diffstat (limited to 'src/features/counter/counterSlice.js')
-rw-r--r-- | src/features/counter/counterSlice.js | 68 |
1 files changed, 10 insertions, 58 deletions
diff --git a/src/features/counter/counterSlice.js b/src/features/counter/counterSlice.js index a9441ac..4cb9993 100644 --- a/src/features/counter/counterSlice.js +++ b/src/features/counter/counterSlice.js @@ -1,29 +1,10 @@ -import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; -import { fetchCount } from "./counterAPI"; - -const initialState = { - value: 0, - status: "idle", -}; - -// The function below is called a thunk and allows us to perform async logic. It -// can be dispatched like a regular action: `dispatch(incrementAsync(10))`. This -// will call the thunk with the `dispatch` function as the first argument. Async -// code can then be executed and other actions can be dispatched. Thunks are -// typically used to make async requests. -export const incrementAsync = createAsyncThunk( - "counter/fetchCount", - async (amount) => { - const response = await fetchCount(amount); - // The value we return becomes the `fulfilled` action payload - return response.data; - } -); +import { createSlice } from '@reduxjs/toolkit' export const counterSlice = createSlice({ - name: "counter", - initialState, - // The `reducers` field lets us define reducers and generate associated actions + name: 'counter', + initialState: { + value: 0, + }, reducers: { increment: (state) => { // Redux Toolkit allows us to write "mutating" logic in reducers. It @@ -34,40 +15,11 @@ export const counterSlice = createSlice({ }, decrement: (state) => { state.value -= 1; - }, - // Use the PayloadAction type to declare the contents of `action.payload` - incrementByAmount: (state, action) => { - state.value += action.payload; - }, - }, - // The `extraReducers` field lets the slice handle actions defined elsewhere, - // including actions generated by createAsyncThunk or in other slices. - extraReducers: (builder) => { - builder - .addCase(incrementAsync.pending, (state) => { - state.status = "loading"; - }) - .addCase(incrementAsync.fulfilled, (state, action) => { - state.status = "idle"; - state.value += action.payload; - }); + } }, -}); - -export const { increment, decrement, incrementByAmount } = counterSlice.actions; - -// The function below is called a selector and allows us to select a value from -// the state. Selectors can also be defined inline where they're used instead of -// in the slice file. For example: `useSelector((state: RootState) => state.counter.value)` -export const selectCount = (state) => state.counter.value; +}) -// We can also write thunks by hand, which may contain both sync and async logic. -// Here's an example of conditionally dispatching actions based on current state. -export const incrementIfOdd = (amount) => (dispatch, getState) => { - const currentValue = selectCount(getState()); - if (currentValue % 2 === 1) { - dispatch(incrementByAmount(amount)); - } -}; +// Action creators are generated for each case reducer function +export const { increment, decrement } = counterSlice.actions -export default counterSlice.reducer; +export default counterSlice.reducer |