reactjs - Přidání hodnot do pole uvnitř objektu ve stavu Zustand
Ukládám uživatelský objekt do stavu v Zustand a obsahuje pole s seznamem oblíbených filmů uživatele (prázdný zástupce je nahrazen po přihlášení). Nicméně, z nějakého důvodu Zustand není schopen uživatelský objekt rozpoznat a tvrdí, že neexistuje, když se ho snažím použít ve funkci setFavoriteMovie. Přitom je jasně vidět, že tam je, jak je ukázáno v kódu níže. Co dělám špatně? Jakákoliv pomoc je oceněna.
import { create } from "zustand";
import { UserObject } from "../pages/login";
interface Store {
user: UserObject;
setUser: (data: any) => void;
setFavoriteMovie: (id: number) => any;
}
const emptyUserObject = {
username: "",
email: "",
name: "",
favoriteMovies: [],
};
const userStore = create<Store>((set, get) => ({
user: emptyUserObject,
setUser: (data: UserObject) => {
set(() => ({ user: data }));
},
setFavoriteMovie: (id: number) => {
set((state) => ({
user.favoriteMovies: [...state.user.favoriteMovies, id],
})),
}
}));
Odpověď č. 1
Budete muset explicitně sloučit vnořené vlastnosti uživatele pomocí operátoru spread:
...
const userStore = create<Store>((set, get) => ({
...
setFavoriteMovie: (id: number) => {
set((state) => ({
user: {
...state.user,
favoriteMovies: [...state.user.favoriteMovies, id]
}
}))
},
}));
Více informací naleznete v dokumentaci Zustand pro vnořené objekty.
