signinwithemailandpassword failed:第一个参数" email"必须是有效的字符串

时间:2018-03-12 16:12:53

标签: firebase react-native firebase-authentication react-redux

App loads and Authentication form shows android emulator showing error

嗨,所以我是React的新手,我正在遵循这个Udemy课程..当我尝试运行时,我的应用程序已加载,它将身份验证表单呈现为魅力而没有错误或警告

但是一旦我尝试登录,一旦我点击登录按钮:弹出可怕的红色屏幕。

我经历了所有相似的科目,但他们似乎没有解决我的错误..我甚至无法得到这里究竟是什么错误

这是我的LoginForm.js:

import { connect } from 'react-redux';
import React, { Component } from 'react';
import { Card, CardSection, Input, Button } from './common';
import { emailChanged, passwordChanged, loginUser } from '../actions';


class LoginForm extends Component {
    onEmailChange(text) {
        this.props.emailChanged(text);
    }


    onPasswordChange(text) {
        this.props.passwordChanged(text);
    }
    onButtonPress() {
        const { email, password } = this.props;

        this.props.loginUser({ email, password });
    }

    render() {
        return (
            <Card>
                <CardSection>
                    <Input
                     label="Email"
                     placeholder="votre email ici"
                     onChangeText={this.onEmailChange.bind(this)}
                     value={this.props.email}  
                    /> 
                </CardSection>

                <CardSection>
                    <Input 
                      secureTextEntry
                      label="mot de passe"
                      placeholder="mot de passe"
                      onChangeText={this.onPasswordChange.bind(this)}
                      value={this.props.password}
                    />    
                </CardSection>

                <CardSection>
                    <Button onPress={this.onButtonPress.bind(this)}>
                        Login                    
                    </Button>                    
                </CardSection>
            </Card>
        );
    }
}

const mapStateToProps = (state) => {
    return {
        email: state.auth.email,
        password: state.auth.password 
    };
};

export default connect(mapStateToProps, { emailChanged, passwordChanged, 
loginUser })(LoginForm);

这是我的行动创作者:

import firebase from 'firebase';

import { 
    EMAIL_CHANGED,
    PASSWORD_CHANGED,
    LOGIN_USER_SUCCESS 
} from './types';

export const emailChanged = (text) => {
    return {
        type: EMAIL_CHANGED,
        paymoad: text
    };
};

export const passwordChanged = (text) => {
    return {
        type: PASSWORD_CHANGED,
        payload: text
    };
};

export const loginUser = ({ email, password }) => {
    return (dispatch) => {
        firebase.auth().signInWithEmailAndPassword(email, password)
        .then(user => {
            dispatch({ type: LOGIN_USER_SUCCESS, payload: user });
    });
    };
};

1 个答案:

答案 0 :(得分:2)

emailChanged action中,您使用了错误的密钥来处理有效负载。您使用payload

而不是paymoad

使用此功能,您不会更新商店,并且电子邮件的值无效。