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
    }
}

変更されたアイテムのみをサーバーに送信する方法がわかりません。何か案が?また、フィールドが 20 個あるとしても、監視可能なオブジェクトであるこの状況で mobx を使用する最も効率的な方法はありますか?

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 に答える