MobX - Observable对象只抓取改变的字段?

时间:2016-07-19 23:37:23

标签: mobx

我有一个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个字段,这是一个可观察的对象吗?

1 个答案:

答案 0 :(得分: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)
            )
        })
    }
}