1

我有一个 MobX 存储设置,其中包含一个具有默认值的可观察对象,并且其值是在加载反应原生场景时从服务器填充的。我有一个可观察的用户偏好列表,UserPreferencesStore如下所示:

class UserPreferencesStore {
    @observable userPreferences = {
        receive_upvotes_mail: 0,
        receive_answers_mail: 0,
        receive_comments_mail: 0
    }
}

在 RN 方面,这些值更改为:

class UserPreferencesStore {
    @observable userPreferences = {
        receive_upvotes_mail: 1,
        receive_answers_mail: 1,
        receive_comments_mail: 0
    }
}

我不确定如何仅将更改的项目发送到服务器。任何的想法?此外,这是在这种情况下使用 mobx 的最有效方法吗,一个可观察的对象,即使我有 20 个字段?

4

1 回答 1

2

这应该是为每个字段建立单独的自动运行或反应的问题:

class UserPreferencesStore {
    @observable userPreferences = {
        receive_upvotes_mail: 1,
        receive_answers_mail: 1,
        receive_comments_mail: 0
    }

    constructor() {
        Object.keys(this.userPreferences).forEach(setting => {
            reaction(
                // whenever a new value is produced...
                () => this.userPreferences[setting],
                // ..run this effect
                (newValue) => storeSettingOnServer(setting, newValue)
            )
        })
    }
}
于 2016-07-20T00:51:37.037 回答