Create store.js
file in the src
folder, which will have all the data you can create slices which are reducer functions what are actions based on the state of the application, this is a RTK functionality there can be multiple slices according to the data in the slice file for example, movieSlice.js
, you can use createSlice
function to create a slice this createSlice function takes in an object with diferent values, name, initialState, reducers we can also create a different object for initialstate import { createSlice } from " @reduxjs/toolkit " ; const initialState = { movies : [], }; const movieSlice = createSlice ({ name : " movies " , initialState , reducers : { addMovie : () => {}, removeMovie : () => {}, }, });
Enter fullscreen mode Exit fullscreen mode so in slices we define the state and when we want to do some change to the state, we call the reducer functions reducer functions take 2 arguments: state and action addMovie : ( state , action ) => { state . movies . push ( action . payload ); },
Enter fullscreen mode Exit fullscreen mode now through the state we can access the state of the slice and then through action we can get the data that we can use to update the state so we can get current state and then we can perform actions of either read or update or delete through the actions now in the main.jsx file we can import Provider from react-redux which will take a store argument where we can pass our store that we have crated import { StrictMode } from " react " ; import { createRoot } from " react-dom/client " ; import " ./index.css " ; import App from " ./App.jsx " ; import { Provider } from " react-redux " ; import { store } from " ./store.js " ; createRoot ( document . getElementById ( " root " )). render ( < StrictMode > < Provider store = { store } > < App /> </ Provider > </ StrictMode > );
Enter fullscreen mode Exit fullscreen mode useSelector is one of the hooks that react-redux provides for getting data from the state const movies = useSelector (( state ) => state . movies . movies );
Enter fullscreen mode Exit fullscreen mode this is how you get the state from the store, here useSelector gets an arguments through which we can access the store. so state.movies
will get the state from the store which will direct to the movies slice so now we can access the the state in the movies slice through state.movies.movies
we can do this because in the movies we have done export const store = configureStore ({ reducer : { movies : movieReducer , }, });
Enter fullscreen mode Exit fullscreen mode useDispatch hook is also one of the hooks that redux provides that is used to call any function or in case of redux it is used to call any action function, in our case it will be addMovie() export const MovieInput = () => { const [ newMovie , setNewMovie ] = useState ( "" ); const dispatch = useDispatch (); const handleAddMovie = () => { if ( newMovie ) { dispatch ( addMovie ( newMovie )); setNewMovie ( "" ); } }; return ( <> < input onChange = { ( e ) => setNewMovie ( e . target . value ) } value = { newMovie } /> < button onClick = { handleAddMovie } > Add Movie</ button > </> ); };
Enter fullscreen mode Exit fullscreen mode so this is the way we can call a function and then pass the value in the slice we can get the value that we passed here through action.payload
Top comments (0)