Skip to content

kevinmitch14/Redux-Cheat-Sheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redux Cheat Sheet

Provide the store to the app.

Wrap App in <Provider> and pass store to the <Provider>

<Provider store={store}> <App> </Provider>

Create the store

Create store.js file to initialise the store.

export default configureStore({ reducer: { eg. navBar: navBarReducer } })

Create a Redux State Slice

import { createSlice } from '@reduxjs/toolkit' const initialState = { activeCategories: [], } export const navBarSlice = createSlice({ name: 'navBar', initialState, reducers: { addFilter: (state, action) => { state.value = [...state.value, action.payload] }, removeFilter: (state, action) => { state.value = [...state.value.filter(items => (item) != action.payload) }, clearFilters: (state, action) => { state.value = [] }, }, }) export const { addFilter, removeFilter, clearFilters } = navBarSlice.actions export default navBarSlice.reducer

Add this slice to the store

import navBarReducer from "../slices/navBarSlice"; export default configureStore({ reducer: { navBar: navBarReducer, }, });

Use data or dispatch actions

import { useSelector, useDispatch } from 'react-redux' import {addFilter, removeFilter, clearFilters} from '../slices/navBarSlice' const state = useSelector(state => state.navBar) <button onClick={() => dispatch(addFilter("Size Large"))}> 

Async Redux using Redux ToolKit

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' export const fetchApi = createApi({ reducerPath: 'fetchingData', baseQuery: fetchBaseQuery({ baseUrl: '' }), endpoints: (builder) => ({ getFetch: builder.query({ query: (input) => `${input}`, }), }), }) export const { useGetFetchQuery } = fetchApi

App.js

import fetchApi from the slice
fetchApi.useGetQuery is called automatically, to stop this we can use a boolean 'skip'.
When skip is true it is not automatically called.
When skip changes to false the fetch is made.

import { fetchApi } from './slices/peopleSlice'; const App = () => { const [skip, setSkip] = useState(true) const { data, error, isLoading } = fetchApi.useGetFetchQuery('https://jsonplaceholder.typicode.com/todos', { skip }) <button onClick={() => setSkip(false)}> Start Fetch! </button> }

store.js

import { fetchApi } from './slices/peopleSlice' export default configureStore({ reducer: { people: peopleSlice, [fetchApi.reducerPath]: fetchApi.reducer, }, middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(fetchApi.middleware), })

About

Redux Cheat Sheet

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published