Wrap App in <Provider> and pass store to the <Provider>
<Provider store={store}> <App> </Provider>Create store.js file to initialise the store.
export default configureStore({ reducer: { eg. navBar: navBarReducer } })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.reducerimport navBarReducer from "../slices/navBarSlice"; export default configureStore({ reducer: { navBar: navBarReducer, }, });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"))}> 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 } = fetchApiimport 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> }import { fetchApi } from './slices/peopleSlice' export default configureStore({ reducer: { people: peopleSlice, [fetchApi.reducerPath]: fetchApi.reducer, }, middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(fetchApi.middleware), })