Как я могу передать реквизиты навигатора из response-native-navigation v2 на заставку через Navigation.setRoot - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь перейти от реакции-нативной навигации v1 к реагированию-нативной навигации v2.Я изо всех сил пытаюсь перейти с

Navigation.startSingleScreenApp

на

Navigation.setRoot

Когда я переключаюсь с Navigation.startSingleScreenApp (v1) на Navigation.setRoot (v2), у меня больше нет поддержки навигаторачто я рассчитывал перемещаться по приложению.

enter image description here Я скопировал и вставил весь соответствующий код ниже

RegisterScreens

import { Navigation } from 'react-native-navigation';
import SplashScreenScreen from './components/SplashScreen';
import { Provider } from 'react-redux';
import React from "react";
import SCREEN from './screenNames';

export default function registerScreens(store) {
  Navigation.registerComponent(
    SCREEN.SPLASH_SCREEN,
    () => props => (<Provider store={store}><SplashScreenScreen {...props} /></Provider>), () => SplashScreenScreen);

Приложение

import { Platform } from 'react-native';
import { Navigation } from 'react-native-navigation';
import registerScreens from './registerScreens';
import { Colors, Fonts } from './themes';
import { store } from './configureStore';
import NavigationListener from './NavigationEventListener';
import configureNotification from './configureNotification';

import SCREEN from './screenNames';
import Reactotron from 'reactotron-react-native';

const navBarTranslucent = Platform.OS === 'ios';

configureNotification();

registerScreens(store);

new NavigationListener(store);

const STARTING_SCREEN = SCREEN.SPLASH_SCREEN;

Navigation.events().registerAppLaunchedListener(() => {
  Reactotron.log('5');
  Navigation.setRoot({
    root: {
      stack: {
        children: [{
          component: {
            id: STARTING_SCREEN,
            name: STARTING_SCREEN
          }
        }],
      }
    },
    layout: {
      orientation: 'portrait',
    },
  });
});

SplashScreen

import React from 'react';
import { View, StyleSheet, Text } from 'react-native';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { PersistGate } from 'redux-persist/es/integration/react';
import { navigateToFirstScreen } from '../redux/splash';
import { Colors, Fonts, Metrics } from '../themes';
import { persistor } from '../configureStore';

export class SplashScreen extends React.Component {
  navigateTo = (screen) =>
    this.props.navigator.push({
      screen,
      overrideBackPress: true,
      backButtonHidden: true,
      animated: false,
      navigatorStyle: {
        disabledBackGesture: true,
      },
    });

  render() {
    const { dispatchNavigateToFirstScreen } = this.props;
    return (
      <PersistGate
        persistor={persistor}
        onBeforeLift={() => setTimeout(() => dispatchNavigateToFirstScreen(this.navigateTo), 2000)}><View style={styles.bodyContainer}
        >
          <Text>Jono</Text>
        </View>
      </PersistGate>
    );
  }
}

const styles = StyleSheet.create({
  bodyContainer: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: Colors.splashScreen,
  },
  appTitleText: {
    fontSize: Fonts.size.splashScreenTitle,
    fontFamily: Fonts.type.extraBold,
    lineHeight: Metrics.lineHeight.appTitle,
    textAlign: 'center',
    color: Colors.textLightColor,
  },
});

SplashScreen.propTypes = {
  navigator: PropTypes.shape({
    push: PropTypes.func.isRequired,
  }).isRequired,
  dispatchNavigateToFirstScreen: PropTypes.func.isRequired,
};

const mapDispatchToProps = (dispatch) => {
  return {
    dispatchNavigateToFirstScreen: (navigateTo) =>
      dispatch(navigateToFirstScreen(navigateTo)),
  };
};

export default connect(null, mapDispatchToProps)(SplashScreen);

1 Ответ

0 голосов
/ 26 июня 2019

Я потратил несколько часов, пытаясь решить эту проблему, поэтому собираюсь опубликовать свое заключение в качестве ответа.

this.props.navigator is not used anymore in 2.x.
You need to use Navigation

У этого парня была та же проблема, и он пришел к такому же выводу: https://github.com/wix/react-native-navigation/issues/3795

...