// store.js (Redux with @reduxjs/toolkit)
import { configureStore, createSlice } from "@reduxjs/toolkit";
const counterSlice = createSlice({
name: "counter",
initialState: { value: 0 },
reducers: {
increment: (state) => {
state.value += 1;
},
decrement: (state) => {
state.value -= 1;
},
incrementByAmount: (state, action) => {
state.value += action.payload;
},
},
});
export const { increment, decrement, incrementByAmount } = counterSlice.actions;
const store = configureStore({
reducer: {
counter: counterSlice.reducer,
},
});
export default store;
_____________________________________________________________
// Counter.js (Redux with @reduxjs/toolkit)
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement, incrementByAmount } from './store';
const Counter = () => {
const count = useSelector((state) => state.counter.value);
const dispatch = useDispatch();
return (
<div>
<h1>{count}</h1>
<button onClick={() => dispatch(increment())}>Increment</button>
<button onClick={() => dispatch(decrement())}>Decrement</button>
<button onClick={() => dispatch(incrementByAmount(5))}>Increment by 5</button>
</div>
);
};
export default Counter;
_____________________________________________________________
// store.js (Zustand)
import create from 'zustand';
const useStore = create((set) => ({
counter: 0,
increment: () => set((state) => ({ counter: state.counter + 1 })),
decrement: () => set((state) => ({ counter: state.counter - 1 })),
incrementByAmount: (amount) => set((state) => ({ counter: state.counter + amount })),
}));
export default useStore;
_____________________________________________________________
// Counter.js (Zustand)
import React from 'react';
import useStore from './store';
const Counter = () => {
const { counter, increment, decrement, incrementByAmount } = useStore();
return (
<div>
<h1>{counter}</h1>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
<button onClick={() => incrementByAmount(5)}>Increment by 5</button>
</div>
);
};
export default Counter;
Create Zustand Store: Use create to define your state and actions
Update Components: Replace useSelector and useDispatch with direct state manipulation using the Zustand store hook