Создавая страницу входа в систему / регистрации, я продолжаю получать эту ошибку "Ошибка типа: невозможно прочитать свойство isAuthenticated из undefined" - PullRequest
0 голосов
/ 22 октября 2019

Я использую избыточность для обработки состояния, но я не думаю, что у меня есть хорошая ручка для избыточности. Вот код на моей странице входа в систему, мои редукторы и действия находятся в другой папке, я поделюсь всем, что вам нужно, если вы можете помочь мне с этим.

Я использую атлас 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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...