Zustand와 Redux는 개념적으로 유사하며 둘 다 상태를 불변으로 관리합니다. 그러나 Redux를 사용할 때는(Context Provider)로 감싸야 합니다. 반면에, Zustand는 이러한 컨텍스트 제공자가 필요 없습니다.
즉, Zustand를 사용하면 설정이 더 간단합니다.
// store.js
import { createStore } from 'redux';
const initialState = { count: 0 };
function counterReducer(state = initialState, action) {
switch (action.type) {
case 'INCREMENT':
return { count: state.count + 1 };
case 'DECREMENT':
return { count: state.count - 1 };
default:
return state;
}
}
const store = createStore(counterReducer);
export default store;
// App.js
import React from 'react';
import { Provider, useDispatch, useSelector } from 'react-redux';
import store from './store';
function Counter() {
const count = useSelector(state => state.count);
const dispatch = useDispatch();
return (
<div>
<h1>Count: {count}</h1>
<button onClick={() => dispatch({ type: 'INCREMENT' })}>Increase</button>
<button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrease</button>
</div>
);
}
function App() {
return (
<Provider store={store}>
<Counter />
</Provider>
);
}
export default App;
// store.js
import create from 'zustand';
const useStore = create((set) => ({
count: 0,
increaseCount: () => set((state) => ({ count: state.count + 1 })),
decreaseCount: () => set((state) => ({ count: state.count - 1 })),
}));
export default useStore;
// App.js
import React from 'react';
import useStore from './store';
function Counter() {
const count = useStore((state) => state.count);
const increaseCount = useStore((state)
function App() {
return (
<Provider store={store}>
<Counter />
</Provider>
);
}
export default App;