1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| const useStore = create((set) => ({
user: {
profile: {
name: 'John',
email: 'john@example.com'
}
},
// OK: スプレッド構文でネストを更新
updateEmail: (email) => set((state) => ({
user: {
...state.user,
profile: {
...state.user.profile,
email
}
}
})),
}))
// Immerを使う場合
import { immer } from 'zustand/middleware/immer'
const useStore = create(
immer((set) => ({
user: { profile: { name: 'John' } },
updateEmail: (email) => set((state) => {
state.user.profile.email = email // Immerでは直接変更OK
}),
}))
)
|