创建一个简单的商店但设置函数未定义

Creating a simple store but set function undefined

我正在尝试创建一个简单的用户存储并将一些经典功能放入其中,但我可能遗漏了一些东西...

非常感谢。

import { writable } from 'svelte/store';

// a simple user just for testing
const userTest = {
    uid: '89sdf2fdq2mP',
    email: 'john.galvin@yopmail.org',
    firstname: 'John',
    lastname: 'Galvin',
    phoneNumber: '',
    photoURL: '',
    emailVerified: false,
    sex: 0,
    date_of_birth: new Date(1990, 8, 1)
};

const user = writable(null);

// the user store
const userStore = {
    subscribe: user.subscribe,
    setUser: (user) => {
        userStore.set(user); // TypeError: userStore.set is not a function
    },
    saveUserProperty: (prop, value) => (userStore.prop = value), // to be tested later
    delete: () => {
        userStore.set(null);
    }
};

console.log(user); // an object containing set, subscribe and update method
userStore.setUser(userTest); // Error

export default userStore;

set 方法由 user 商店提供,而不是 userStore。此外,使用另一个变量来描述用户数据,因为 user 是您初始商店的名称。最后,请参阅下文以正确实施 saveUserProperty.

// the user store
const userStore = {
    subscribe: user.subscribe,
    setUser: (u) => {
        user.set(u); // TypeError: userStore.set is not a function
    },
    // saveUserProperty: (prop, value) => (userStore[prop] = value), // to be tested later
    delete: () => {
        user.set(null);
    }
};

如果我明白你的目标是什么,saveUserProperty 方法将是:

    saveUserProperty: (prop, value) => {
        user.update((u) => ({ ...u, [prop]: value }))
    }