React의 useState 훅과 마찬가지로 상태를 불변으로 업데이트 해야 합니다.
import { create } from 'zustand';
const store = (set) => ({
count: 0,
increment: () =>
set((store) => ({
count: store.count + 1
}))
});
const useCountStore = create(store);
set
함수는 스토어의 상태를 업데이트합니다. 일반적으로 상태 업데이트는 다음과 같이 해야 합니다.
set((store) => ({ ...store, count: store.count + 1 }))
하지만 set
함수는 상태를 얕게 병합하므로 …store
부분은 건너띌 수 있습니다.
set((store) => ({ count: store.count + 1 }))
set
함수는 얕게 상태를 병합합니다. 그러므로 중첩된 객체를 포함하는 경우 명시적으로 병합해야 합니다.
import { create } from 'zustand';
const store = (set) => ({
nested: {
count: 0,
name: 'countStore'
},
increment: () =>
set((store) => ({
**nested: {
...sotre.nested,
count: store.nested.count + 1
}**
}))
});
export const useCountStore = create(store);
복잡하게 구성된 중첩 객체는 관리가 매우 까다롭습니다. 이런 경우 외부 라이브러리를 활용해 상태 관리하는 것이 좋습니다. 중첩된 상태 객체 값 업데이트를 참고하세요.