Zustand로 상태를 업데이트 하는 것은 간단합니다! 제공된 set
함수를 호출하면 스토어(store)의 기존 상태와 새로운 상태를 얕게 병합(shallowly merge)합니다. 다음 섹션에서는 중첩된 상태에 대해 다룹니다.
namesStore.js
import { create } from 'zustand';
const namesStore = (set) => ({
firstName: '',
lastName: '',
setFirstName: (firstName) => set({ firstName }),
setLastName: (lastName) => set({ lastName }),
});
const useNames = create(namesStore);
export default useNames;
App.jsx
**import { useStore } from './useStore';**
function App() {
**const [firstName, setFirstName] = useStore(
({ firstName, setFirstName }) => [firstName, setFirstName],
shallow,
);**
return (
<main>
<label>
First Name
<input
type="text"
value={**fistName**}
onChange={(e) => **setFirstName(e.target.value)**}
/>
</label>
<p>Hello, <strong>{**firstName**}!</strong></p>
</main>
);
}
2. 상태 업데이트 - 플랫 업데이트 - StackBlitz
다음과 같이 깊숙히 중첩된 상태 객체가 있다고 가정합니다.
const store = (set) => {
deep: {
nested: {
obj: {
count: 100,
},
},
},
// ...
}
중첩된 상태를 업데이트하려면 프로세스 변경없이 수행되도록 약간의 노력이 필요합니다.
<aside> 📌 상태를 깊숙히 중첩하여 만드는 것은 관리를 어렵게 하므로 가급적이면 상태를 플랫(flat)하게 유지하는 것이 좋습니다.
</aside>