React-Native Flash-сообщение с Mobx и React-навигацией - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь использовать response-native-flash-message, чтобы добавить небольшие тосты в мое приложение, и я должен добавить флэш-сообщение в мой корневой вид.Я не могу понять, где это находится в моем приложении.Я использовал примеры, чтобы начать работу с mobx / реагировать на навигацию / реагировать на натив, и поэтому мой app.js на самом деле просто экспортирует index.js, который выглядит следующим образом:

import React from 'react';
import { createRootNavigator } from './router';
import { isSignedIn } from './auth';
import { Font, SplashScreen } from 'expo';
import { library } from '@fortawesome/fontawesome-svg-core';
import { faCheckSquare, faCoffee, faHome } from '@fortawesome/free-solid-svg-icons';
import { configure } from 'mobx';
import { Provider } from 'mobx-react';
import _ from 'lodash';

import { RootStore } from './stores/RootStore';
import { getDecoratedStores } from './stores/util/store-decorator';
import { AsyncStorage } from 'react-native';
import FlashMessage from "react-native-flash-message";

configure({ enforceActions: 'observed' });
const rootStore = new RootStore();
const stores = getDecoratedStores(rootStore);

//Library of Icons
library.add(faCheckSquare, faCoffee, faHome);

export default class App extends React.Component<
  {},
  { checkedSignIn: boolean; signedIn: boolean; loaded: boolean }
> {
  constructor(props: any) {
    super(props);

    this.state = {
      signedIn: false,
      checkedSignIn: false,
      loaded: false,
    };
  }

  componentWillMount() {
    this._loadFontsAsync();

  }

  _loadFontsAsync = async () => {
    await Font.loadAsync({ robotoBold: require('../app/uiComponents/fonts/Roboto-Bold.ttf') });
    await Font.loadAsync({
      robotoRegular: require('../app/uiComponents/fonts/Roboto-Regular.ttf'),
    });

    this.setState({ loaded: true });
  };

  componentDidMount() {
    isSignedIn()
      .then(res => {
        SplashScreen.hide();
        this.setState({ signedIn: res as boolean, checkedSignIn: true });
      })
      .catch(err => {console.log(err); alert('Error')});
  }

  render() {
    const { checkedSignIn, signedIn } = this.state;

    // If we haven't checked AsyncStorage yet, don't render anything (better ways to do this)
    if (!checkedSignIn) {
      return null;
    }

    AsyncStorage.getItem('auth-demo-key').then((data) => console.log("Async Storage: " + data));

    const Layout = createRootNavigator(signedIn);
    return (
      <Provider {...stores}>
        <Layout />
      </Provider>
    );
  }
}

Может кто-нибудь помочь мневыяснить, как добавить мое флэш-сообщение в этом операторе возврата?Я попытался обернуть провайдера в представление, но это не помогло, и мое приложение перестало работать, также как и при добавлении его в провайдере (представление), также попытался просто добавить флэш-сообщение здесь, в провайдере, но и это не удалось.Кто-нибудь может помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...