Навигация из app.js с помощью стекового навигатора в рендере - PullRequest
1 голос
/ 09 октября 2019

Я использую https://reactnavigation.org, и я не понимаю, как мне перемещаться, если файл находится внутри app.js ...

Я тестирую NavigationService, но я не понимаю, как работает...

Мой код в App.js

import NavigationService from './src/utils/helpers/NavigationService';

const App = () => {

var PushNotification = require("react-native-push-notification");

  PushNotification.configure({
    onNotification: function(notification) {

        let num = 0;
        if (Platform.OS === 'ios') {
          num = notification.data.num;
        } else {
          num = notification.userInfo.num;
        }

        switch(num) {

          case 1:
            NavigationService.navigate('Scan', {a: 'a'});
            break;

          default:
            console.warn("NUMBER NOT FOUND");

        }
    }
  })

  return (
    <AppNavigator />
  );

export default App;

MainNavigation.js

const MyDrawerNavigator = createDrawerNavigator({
  Home: {
    screen: HomeScreen,
  },
  Scan: {
    screen: ScanScreen,
  },
});

export default createAppContainer(MyDrawerNavigator);

NavigationService

import { NavigationActions } from 'react-navigation';

let _navigator;

function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

function navigate(routeName, params) {
  _navigator.dispatch(
    NavigationActions.navigate({
      routeName,
      params,
    })
  );
}

export default {
  navigate,
  setTopLevelNavigator,
};

Как перемещатьсяиз файла app.js?

1 Ответ

1 голос
/ 09 октября 2019

В соответствии с документацией ,

Измените импорт файла MainNavigation.js по умолчанию с

export default createAppContainer(MyDrawerNavigator);

на

import NavigationService from './src/utils/helpers/NavigationService';

.....

export default class App extends React.Component {
  // ...

  render() {
    return (
      <AppContainer
        ref={navigatorRef => {
          NavigationService.setTopLevelNavigator(navigatorRef);
        }}
      />
    );
  }
}

...