Я использую избыточность для обработки состояния, но я не думаю, что у меня есть хорошая ручка для избыточности. Вот код на моей странице входа в систему, мои редукторы и действия находятся в другой папке, я поделюсь всем, что вам нужно, если вы можете помочь мне с этим.
Я использую атлас MongoDB для хранения пользователей. Моя страница входа в систему изначально работала, и я видел информацию о пользователе, отображаемую в базе данных. После того, как я начал работать над своей страницей регистрации, на странице входа появляется та же ошибка, прежде чем я даже могу ввести какую-либо информацию, поэтому я знаю, что что-то напутал с этим.
import React, { Fragment, useState } from "react";
import { Link, Redirect } from "react-router-dom";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { login } from "../../actions/auth";
import { Helmet } from "react-helmet";
const Login = ({ login, isAuthenticated }) => {
const [formData, setFormData] = useState({
email: "",
password: ""
});
const { email, password } = formData;
const onChange = e =>
setFormData({ ...formData, [e.target.name]: e.target.value });
const onSubmit = async e => {
e.preventDefault();
login(email, password);
};
if (isAuthenticated) {
return <Redirect to="/dashboard" />;
}
if (isAuthenticated) {
return <Redirect to="/dashboard" />;
}
return (
<Fragment>
<Helmet bodyAttributes={{ style: "background-color: black" }} />
<div style={{ marginLeft: "30%", marginRight: "30%" }}>
<div className="card">
<form onSubmit={e => onSubmit(e)}>
<div style={formStyle} className="form-group">
<label className="lightgrey">Email Address:</label>
<input
value={email}
style={input}
className="form-control"
placeholder="name@example.com"
onChange={e => onChange(e)}
required
name="email"
/>
</div>
<div className="form-group">
<label className="lightgrey">Password</label>
<input
value={password}
style={input}
type="password"
className="form-control"
placeholder="password"
onChange={e => onChange(e)}
required
name="password"
autoComplete="password"
/>
</div>
<input
onSubmit={e => onSubmit(e)}
type="submit"
className="btn btn-primary"
value="Log In"
/>
</form>
<p>
Don't have an account? <Link to="/register">Sign Up</Link>
</p>
</div>
</div>
</Fragment>
);
};
Login.propTypes = {
login: PropTypes.func.isRequired,
isAuthenticated: PropTypes.bool
};
const mapStateToProps = state => ({
isAuthenticated: state.auth.isAuthenticated
});
export default connect(
mapStateToProps,
{ login }
)(Login);