2016-07-17 2 views
1

나는 MobX 저장소를 가지고 있으며, 네이티브 클래스를 설정하고 작동하지만 의도 한대로 작동하지 않습니다. 나는이 같은 UserPreferencesStore에서 관찰 할 수있는 사용자 환경 설정의 목록이 있습니다MobX - 관찰 가능한 값을 변경하기 위해 관찰 가능한 매개 변수를 동작에 전달 하시겠습니까?

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

및 다음 반응 기본 클래스에서

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

를,이 같은 TouchableHighlight의 onPress에에 따라 위의 관찰 가능한을 업데이트 할 여기에 작동하지 않습니다 관찰 가능한을 업데이트 할 onPressPreference 조치는 ...입니다

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

,783,매개 변수가 경고를 표시 할 때 완벽하게 전달되지만 여기에 "첨부 된"경우 UserPreferencesStore.userPreferences.preferenceName 전달 된 환경 설정 가능한 관찰 가능 값을 업데이트 할 때 작동하지 않는 것처럼 보입니다.

그러나 각 환경 설정에 하나씩 액션을 생성하고 onPress를 트리거하면 작동하고 관찰 가능 항목이 상점에서 올바르게 값을 업데이트하지만 많은 코드가 반복되어 실제로 얻길 원합니다. 전달 된 매개 변수와 함께 단일 작업으로 작업 할 수 있습니다.

전달 된 매개 변수를 사용하여 단일 관찰 값으로 각 관측 값을 업데이트하는 방법을 알려주십시오.

+0

귀하의 질문은 실제로 MobX가 아닌 ECMAScript입니다. – Alik

답변

3

변수 이름이있는 속성에 액세스하려면 괄호 표기법을 사용해야합니다. UserPreferencesStore.userPreferences[preferenceName] = UserPreferencesStore.userPreferences[preferenceName] == 0 ? 1 : 0;

+0

고맙습니다. 오늘 새로운 것을 배웠습니다 :) – Wonka