использовать Mobx store в заголовке навигации - PullRequest
0 голосов
/ 17 октября 2018
//{Imports Here}

 const LoggedOut = createStackNavigator({
  Login: {
    screen: Login,
    navigationOptions: { header: null }
  }
});

const LoggedIn = createStackNavigator({
  Home: {
    navigationOptions: ({ navigation}) => ({
      headerRight: (
        <View style={[styles.alternativeLayoutButtonContainer]}>
          <TouchableOpacity
            onPress={() => {
              navigation.navigate("SelectFlag");
            }}
          >
            <Text
              style={[
                styles.awesomePhone,
                store.user.agent.calling
                  ? (style = { color: "#444" })
                  : (style = { color: "red" })
              ]}
            >
              &#xf095;
            </Text>
          </TouchableOpacity>

        </View>
      )
    }),

 SelectFlag: {
    screen: SelectFlag,
    navigationOptions: { header: null }
  }
  //{Other Screens here}
});



const App = ({ store }) =>
  store.user.isLoggedIn ? <LoggedIn /> : <LoggedOut />;

export default inject("store")(observer(App));

это мой код, и я отчаянно пытаюсь использовать значение из магазина Mobx (store.user.agent.calling), чтобы проверить, звонит кто-то или нет.

я пытался:

//navigationOptions: ({ navigation, store}) => ({

и пытался каким-то образом @inject его в TouchableOpacity, но у меня закончились идеи, чтобы исправить это

... хорошо, я пытался больше, чем две его вещи, но в моей головеэти два казались наиболее логичными и разумными.

извините, но это глупый вопрос, но я действительно новичок в Mobx

1 Ответ

0 голосов
/ 18 октября 2018

хорошо, я прекратил пытаться внедрить его как-то прямо в компонент, и я упаковал в отдельный класс, как это:

//{Imports here}

 @inject("store")
 export default class IncommingCall extends Component {
   render() {
     return (
       <View>
         <TouchableOpacity
           onPress={() => {
             navigation.navigate("SelectFlag");
           }}
         >
           <Text
             style={[
               styles.awesomePhone,
               !this.props.store.user.agent.calling
                 ? (style = { color: "#444" })
                 : (style = { color: "red" })
             ]}
           >
             &#xf095;
           </Text>
         </TouchableOpacity>
       </View>
     );
   }
 }
...