Нужна помощь для формы входа - PullRequest
1 голос
/ 10 мая 2019

Я получаю следующую ошибку:

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

Может кто-нибудь помочь мне выяснить, где моя ошибка?

Вот мой код:

import React from 'react';
import {View, Button, Text} from 'react-native';
import * as firebase from 'firebase';
import HomeScreen from '../components/HomeScreen';
import {createStackNavigator} from 'react-navigation';
import {FormLabel, FormInput} from 'react-native-elements';

export default class Login extends React.Component {
  constructor(props){
    super(props);
    this.state = {email:'', password:'', error:'', loading: false};
  }

  onLoginPress(){
    this.setState({error:'', loading: true});
    const {email, password} = this.state;
    firebase.auth().signInWithEmailAndPassword(email, password)
    .then(() => {
      this.setState({error:'', loading: false})
      this.props.navigation.navigate('HomeScreen')
    })
    .catch(() =>{
      this.setState({error:'Authentication failed', loading: false});
    })
  }

  onSignUpPress(){
    this.setState({error:'', loading: true});
    const {email, password} = this.state;
    firebase.auth().createUserWithEmailAndPassword(email, password)
    .then(() => {
      this.setState({error:'', loading: false})
      this.props.navigation.navigate('HomeScreen')
    })
    .catch(() =>{
      this.setState({error:'Authentication failed', loading: false});
    })
  }

  renderButtonOrLoading(){
    if(this.state.loading){
      return <Text> Loading </Text>
    }
    return <View>
      <Button
      onPress={this.onLoginPress.bind(this)} 
      title='Login'/> 
       <Button
      onPress={this.onSignUpPress.bind(this)}
      title='Sign Up'/>
    </View>
  }

  render(){
    return(
      <View>
         <Label> Email </Label>
    <Input
    label={"Login"}
    value={this.state.email}
    placeholder='john@gmail.com' 
    onChangeText={email => this.setState({email})}/>
    <Label> Password </Label>
    <Input
    label={"Login"}
    value={this.state.password}
    secureTextEntry
    placeholder='********'
    onChangeText={password => this.setState({password})}/>
    <Text>{this.state.error}</Text>
    {this.renderButtonOrLoading()}
      </View>
    )
  }

}

Вот ошибка:

error

1 Ответ

1 голос
/ 10 мая 2019

Мне удалось заставить его работать с этим кодом:

import React from 'react';
import {View} from 'react-native';
import {Input} from 'react-native-elements';

export default class FormExample extends React.Component {
  render(){
    return(
      <View>
        <Input
        label={"Login"}/>
      </View>
    )
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...