Получение ошибки «createStackNavigator не является функцией» при попытке реализовать React Native Navigation - PullRequest
0 голосов
/ 22 апреля 2019

Я пытался выучить React Native, следуя этой серии руководств, и я застрял с навигацией по родной реакции.https://www.youtube.com/watch?v=5uIftiPLsC4&list=PLYxzS__5yYQlHANFLwcsSzt3elIbYTG1h&index=21

На симуляторе iPhone я получаю эту ошибку:

(0, _reactNavigation.createStackNavigator) is not a function. (In '(0, _reactNavigation.createStackNavigator)({
    home: App,
    test: Test
})', '(0, _reactNavigation.createStackNavigator)' is undefined)

А на Android я получаю эту ошибку:

Properties can only be defined on Objects.

Это код, который у меня есть в App.js

import React, {Component} from 'react';
import {
  Platform, 
  StyleSheet, 
  Text, 
  View,
  Button
} from 'react-native';
import {createStackNavigator} from 'react-navigation';


class App extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          This is App component!
        </Text>
        <Button onPress={() => this.props.navigation.navigate('test')} title="Go to Test"></Button>
      </View>
    );
  }
}

class Test extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          This is Test component!
        </Text>
        <Button onPress={() => this.props.navigation.navigate('home')} title="Go to App"></Button>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

export default createStackNavigator({
  home: App,
  test: Test
})

В основном это просто скопировано из учебника, но единственный способ заставить его отобразить что-либо - это удалить следующее снизу

export default createStackNavigator({
  home: App,
  test: Test
})

и добавьте экспорт по умолчанию обратно в приложение, но тогда, очевидно, навигация не будет работать.

Я установил обработчик реагировать на навигацию и реагировать на родные жесты (тоже связан) и добавил строки в Android MainActivity..java, как указано в документации.

Я что-то упустил?Заранее спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019

Если вы react-navigation v-3, вы должны добавить createAppContainer

Таким образом.Оно работает.Проверьте здесь https://snack.expo.io/@masukhelal/navigation-example

import React, {Component} from 'react';
import {
  Platform, 
  StyleSheet, 
  Text, 
  View,
  Button
} from 'react-native';
import { createAppContainer, createStackNavigator } from 'react-navigation';


class App extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          This is App component!
        </Text>
        <Button onPress={() => this.props.navigation.navigate('test')} title="Go to Test"></Button>
      </View>
    );
  }
}

class Test extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          This is Test component!
        </Text>
        <Button onPress={() => this.props.navigation.navigate('home')} title="Go to App"></Button>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

const AppNavigator = createStackNavigator({
  home: App,
  test: Test
})

const AppContainer = createAppContainer(AppNavigator);

export default AppContainer;

...