我有一个 MobX 商店,以及一个反应本机类设置和工作,但不是按预期的那样。我有一个可观察的用户偏好列表,UserPreferencesStore
如下所示:
class UserPreferencesStore {
@observable userPreferences = {
receive_upvotes_mail: 0,
receive_answers_mail: 0,
receive_comments_mail: 1
}
}
在 react native 类中,我想基于 onPress 更新上述 observables,TouchableHighlight
如下所示:
<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;
}
正如警报所显示的那样,参数被完美地传递了,但是当“附加”这里以更新传递的首选项可观察存储值preferenceName
时,它似乎不起作用。UserPreferencesStore.userPreferences.preferenceName
但是,如果我创建 3 个操作,每个首选项一个,并在 onPress 上触发它们,那么它会起作用,并且可观察对象会正确更新商店中的值,但是重复了很多代码,我真的很想让它使用传递给单个动作的参数。
知道如何让传递的参数与单个操作一起更新相应的 observable 的值吗?