簡體   English   中英

MobX - 將參數傳遞給action作為observable以更改可觀察值?

[英]MobX - Pass parameter to action as observable to change observable value?

我有一個MobX商店,並且反應本機類設置和工作,但不是預期的。 我在UserPreferencesStore有一個可觀察的用戶首選項列表,如下所示:

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

在本機類中,我想基於onPress的TouchableHighlight更新上面的observable,如下所示:

<TouchableHighlight onPress={() => this.onPressPreference('receive_upvotes_mail')}>
    <Image source={require('images/Email.png')}
           style={UserPreferencesStore.userPreferences.receive_upvotes_mail == 1 && styles.active} />
</TouchableHighlight>

<TouchableHighlight onPress={() => this.onPressPreference('receive_answers_mail')}>
    <Image source={require('images/Email.png')}
           style={UserPreferencesStore.userPreferences.receive_answers_mail == 1 && styles.active} />
</TouchableHighlight>

<TouchableHighlight onPress={() => this.onPressPreference('receive_comments_mail')}>
    <Image source={require('images/Email.png')}
           style={UserPreferencesStore.userPreferences.receive_comments_mail == 1 && styles.active} />
</TouchableHighlight>

這是onPressPreference操作來更新不起作用的observable ...

@action onPressPreference = (preferenceName) => {
    // alert(preferenceName);
    UserPreferencesStore.userPreferences.preferenceName = UserPreferencesStore.userPreferences.preferenceName == 0 ? 1 : 0;
}

preferenceName參數會在警報顯示時完美地傳遞,但是當“附加”此處UserPreferencesStore.userPreferences.preferenceName以更新傳遞的首選項可觀察商店值時,它似乎不起作用。

但是,如果我創建3個動作,每個首選項一個,並在onPress上觸發它們,那么它可以工作,並且observable在商店中正確地更新了值,但是重復了很多代碼,我真的想讓它與它一起工作傳遞給一個動作的參數。

知道如何讓傳遞的參數與單個動作一起使用以更新相應的observable的值嗎?

您需要使用括號表示法來訪問具有變量名稱的屬性。 UserPreferencesStore.userPreferences[preferenceName] = UserPreferencesStore.userPreferences[preferenceName] == 0 ? 1 : 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM