reactjs - Zustand durumunda bir nesnenin içindeki diziye değerler ekleyin


Zustand durumunda saklanan bir kullanıcı nesnem var ve bu nesne, kullanıcının favori filmlerinin listesini içeren bir dizi içeriyor (boş yer tutucu giriş yapıldığında değiştirilir). Ancak, bazı nedenlerden dolayı, Zustand kullanıcı nesnesini tanımıyor ve setFavoriteMovie fonksiyonunu kullanmaya çalıştığımda mevcut olmadığını iddia ediyor. Ama aşağıdaki kodda gösterildiği gibi doğru bir şekilde orada olduğunu açıkça görebilirsiniz. Ben neyi yanlış yapıyorum? Her türlü yardım takdir edilir.

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

Cevap #1

Kullanıcının iç içe geçmiş özelliklerini açıkça birleştirmek için spread operatörünü kullanmanız gerekecek:

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

İç içe geçmiş nesneler için zustand belgelerinde daha fazla bilgi bulabilirsiniz.

İlgili makaleler