Как правильно импортировать экраны в одном каталоге? - PullRequest
0 голосов
/ 06 февраля 2019

Я новичок в react-native/expo, и в настоящее время я пытаюсь протестировать свой код и убедиться, что я правильно настроил react-navigation.Когда я пытаюсь запустить expo на своем смартфоне, я получаю следующее сообщение:

Невозможно разрешить модуль './screens/RegistrationScreen' из 'C: \ Users [имя пользователя] \ Desktop \ JDA \Smartbox \screen \ HomeScreen.js ': модуль' ./screens/RegistrationScreen не найден в 'C: \ Users [имя пользователя] \ Desktop \ JDA \ Smartbox \screen \ HomeScreen.js'.На самом деле, ни один из этих файлов не существует ...

Я не совсем уверен, неправильно пишу каталог или нет, но я не могу найти много других ситуаций, где этопроисходит и найти правильное решение.

import React from 'react';
import {
  Image,
  Platform,
  ScrollView,
  StyleSheet,
  StatusBar,
  Text,
  Button,
  TouchableOpacity,
  View,
} from 'react-native';
import { WebBrowser } from 'expo';

import { MonoText } from '../components/StyledText';

import {createStackNavigator} from 'react-navigation';

import RegistrationScreen from './screens/RegistrationScreen';

export default class HomeScreen extends React.Component {
  static navigationOptions = {
    header: null,
  };

  onPress = () => {
    this.props.navigation.navigate('Home')
  };

  render() {
    return (
      <View style={{flex: 1}}>
      <View style={[{flex: 1}, styles.container]}>
      <Text style={styles.getStartedText}>Manage my locks</Text>
      </View>
      <View style={{flex: 2}}/>
      <Button style={{flex: 1}}title="Registration Test" onPress={this.onPress}>
      </Button>
      <Button style={{flex: 1}} title="Add new lock">
      </Button>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    ...Platform.select({
      android: {
        marginTop: StatusBar.currentHeight + 15
      }
    })
  },
  developmentModeText: {
    marginBottom: 20,
    color: 'rgba(0,0,0,0.4)',
    fontSize: 14,
    lineHeight: 19,
    textAlign: 'center',
  },
  contentContainer: {
    paddingTop: 30,
  }
});

createStackNavigator({
  Register: {
    screen: RegistrationScreen
  },
  Home: {
    screen: HomeScreen
  }
});

Заголовок из RegistrationScreen выглядит следующим образом:

import React from 'react';
import {
    AppRegistry,
    Button,
    StyleSheet,
    Text,
    TextInput,
    TouchableOpacity,
    View

} from 'react-native';

import {createStackNavigator} from 'react-navigation';

import HomeScreen from './screens/HomeScreen';

Экран HomeScreen и Registration находятся в одном каталоге.Я просто делаю это для тестирования, но хочу быть уверенным, что смогу перейти с этого экрана к регистрации после нажатия кнопки.

1 Ответ

0 голосов
/ 07 февраля 2019

Поскольку ваш HomeScreen и RegistrationScreen находятся в одном каталоге, ваш импорт HomeScreen должен быть

import HomeScreen from './HomeScreen';

вместо

import HomeScreen from './screens/HomeScreen';

, а RegistrationScreen должен быть

import RegistrationScreen from './RegistrationScreen';

вместо

import RegistrationScreen from './screens/RegistrationScreen';
...