reactjs - הוסף ערכים למערך בתוך אובייקט במצב Zustand


יש לי אובייקט משתמש שנשמר במצב של Zustand והוא מכיל מערך עם רשימת הסרטים האהובים על המשתמש (החלונית הריקה מוחלפת בעת ההתחברות). עם זאת, מסיבה כלשהי, Zustand אינו מזהה את אובייקט המשתמש, וטוען שהוא לא קיים כשאני מנסה להשתמש בו בפונקציה setFavoriteMovie. אבל אפשר להבחין שהוא שם בצורה ברורה כפי שמוצג בקוד למטה. מה אני עושה לא נכון? כל עזרה מוערכת.

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],
    })),
  }
}));

תשובה #1

תצטרך למזג את התכונות המקוננות של המשתמש במפורש על ידי שימוש באופרטור הפצה:

...
const userStore = create<Store>((set, get) => ({
 ...
 setFavoriteMovie: (id: number) => {
    set((state) => ({
      user: {
        ...state.user,
        favoriteMovies: [...state.user.favoriteMovies, id]
      }
    }))
  },
}));

אתה יכול למצוא מידע נוסף בתיעוד של Zustand עבור אובייקטים מקוננים.