我有一個MobX存儲和一個反應原生類的設置和工作,但沒有按照預期。我觀察到的用戶偏好在UserPreferencesStore
像這樣的列表:MobX - 將參數傳遞爲可觀察的可變觀察值?
class UserPreferencesStore {
@observable userPreferences = {
receive_upvotes_mail: 0,
receive_answers_mail: 0,
receive_comments_mail: 1
}
}
在反應機類,我想更新基礎上的TouchableHighlight
onPress這樣的上述觀測:
<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
操作以更新不起作用的觀...
@action onPressPreference = (preferenceName) => {
// alert(preferenceName);
UserPreferencesStore.userPreferences.preferenceName = UserPreferencesStore.userPreferences.preferenceName == 0 ? 1 : 0;
}
的當警報顯示它時,參數會得到完美的傳遞,但在「追加」這裏UserPreferencesStore.userPreferences.preferenceName
更新傳遞的首選項可觀察商店值時,它似乎不起作用。但是,如果我創建了3個動作,每個動作都有一個,並且觸發它們onPress,那麼它就可以工作,而且observable可以在商店中正確更新值,但是它重複了很多代碼,而且我真的很想獲得它將傳遞的參數用於單個動作。
任何想法如何讓傳遞的參數與單個動作一起工作來更新相應的observable的值?
你的問題是關於ECMAScript,其實不是關於MobX – Alik