我能再看一眼吗? 我的React Native模拟器说的,电子邮件的格式不正确?
LoginForm.js
:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { emailChanged, passwordChanged, loginUser } from '../actions';
import { Card, CardSection, Input, Button } from './common';
class LoginForm extends Component {
onEmailChanged(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="email@gmail.com"
onChangeText={this.onEmailChanged.bind(this)}
value={this.props.email}
/>
</CardSection>
<CardSection>
<Input
secureTextEntry
label="Password"
placeholder="password"
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);
actions/index.js
:
import firebase from 'firebase';
import { EMAIL_CHANGED, PASSWORD_CHANGED } from './types';
export const emailChanged = text => {
return {
type: 'EMAIL_CHANGED',
payload: 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 });
});
};
};
types.js
:
export const EMAIL_CHANGED = 'email_changed';
export const PASSWORD_CHANGED = 'password_changed';
AuthReducer.js
:
import { EMAIL_CHANGED, PASSWORD_CHANGED } from '../actions/types';
const INITIAL_STATE = { email: '', password: '' };
export default (state = INITIAL_STATE, action) => {
console.log(action);
switch (action.type) {
case EMAIL_CHANGED:
return { ...state, email: action.payload };
case PASSWORD_CHANGED:
return { ...state, password: action.payload };
default:
return state;
}
};
错误似乎来自firebase,但我没有找到任何与错误有关的文档。
答案 0 :(得分:2)
因此,在查看了一段时间的代码之后,请与此处的同事讨论该代码并尝试不同的修复程序。
另一位同事提到了自己的动作创建者问题,与我的类似。因此,我决定查看我的actions/index.js
文件,并确定如果您查看type: 'EMAIL_CHANGED'
,它应该是type: EMAIL_CHANGED
,不需要引号。
此后,我刷新了模拟器,尝试登录并在控制台中输入了{type: "LOGIN_USER_SUCCESS", payload: Lk}
。