Ошибка при использовании формы: недопустимый тип элемента; ожидается строка, но она не определена.

У меня следующая ошибка

Неперехваченное инвариантное нарушение: недопустимый тип элемента: ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: undefined. Скорее всего, вы забыли экспортировать свой компонент из файла, в котором он определен.

Я читал много сообщений об этой ошибке, например this или this, но все они говорят одно и то же: я неправильно экспортирую свой компонент. Но я не понимаю, что не так с моим экспортом

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, Image, ImageBackground, Linking, TouchableOpacity, TouchableHighlight, Alert, Button } from 'react-native';
import { createStackNavigator, createAppContainer } from "react-navigation";
import { FormLabel, FormInput, FormValidationMessage} from 'react-native-elements';

type Props = {};
export default class Login extends Component<Props> {
  constructor(props) {
    super(props);
    state = {
        login: '',
   };
  }
  someFunction(){
    Alert.alert("test")
  }

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

  checkLogin(login){
    Alert.alert('test');
  }

  render() {
    return (
      <View style={styles.container}>
            <Image
              style={styles.image}
              source={require("./images/logo.png")}>
            </Image>
            <FormLabel style={styles.flex1}>enter Login of your Hotel</FormLabel>
            <FormInput 
                //value = {this.state.login}
                onChangeText={login => this.checkLogin({login})}
                //onChangeText={this.checkLogin.bind(login)}
                placeholder='enter your login'
                autoCapitalize = 'none'
                />
      </View>
    );
  }
}

и App.js:

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, Image,ImageBackground, Linking, TouchableOpacity, Alert } from 'react-native';
import { createStackNavigator, createAppContainer } from "react-navigation"
import {HomeScreen} from './HomeScreen';
import Display from './Display';
import Login from './Login';

export default class App extends React.Component {
  render() {
    return <AppContainer />;
  }
}

const AppNavigator = createStackNavigator({
  Home: HomeScreen,
  Display: Display,
  Login: Login,
},
{
  initialRouteName: "Login",
  headerMode: 'none', 
}
);

const AppContainer = createAppContainer(AppNavigator);

Вы имеете представление о том, что не так? Ошибка возникает только тогда, когда я использую FormInput и FormLabel. Если я заменю на "привет", отобразится


person droledenom    schedule 09.04.2019    source источник
comment
Откуда FormLabel и FormInput?   -  person Vencovsky    schedule 09.04.2019
comment
@Vencovsky: от react-native-elements   -  person droledenom    schedule 10.04.2019


Ответы (1)


Похоже, что FormInput и FormLabel устарели в v1.0.0-beta.

См. Здесь (в разделе v1.0.0-beta (beta 1) Changes) - https://github.com/react-native-training/react-native-elements/releases/tag/v1.0.0-beta

Вы должны использовать Input вместо FormInput со свойством label вместо использования компонента FormLabel.

<FormInput 
   label={"Login"} />
person Jono    schedule 10.04.2019