反应 - 未处理的拒绝(TypeError):无法读取未定义的属性“错误”

时间:2021-04-20 15:06:26

标签: javascript reactjs

我是 React 的新手,我在使用用户登录和管理员登录时遇到错误 enter image description here

这是我在登录文件中的方法,我遇到了一个错误 - 未定义的错误。如果用户登录成功,我将使用状态值中的错误来更改错误状态

    const [values, setValues] = useState({
    email: "",
    password: "",
    error: "",
    loading: false,
    didRedirect: false
  });

  const { email, password, error, loading, didRedirect } = values;
  const { user } = isAuthenticated();

  const handleChange = name => event => {
    setValues({ ...values, error: false, [name]: event.target.value });
  };

  const onSubmit = event => {
    event.preventDefault();
    setValues({ ...values, error: false, loading: true });
    signin({ email, password })
      .then(data => {
        if(data.error) {
          setValues({ ...values, error: data.error, loading: false });
        } else {
          authenticate(data, () => {
            setValues({
              ...values,
              didRedirect: true
            });
          });
        }
      })
      .catch(console.log("signin request failed"));
  };

  const performRedirect = () => {
    //TODO: do a redirect here
    if (didRedirect) {
      if (user && user.role === 1) {
        return <Redirect to="/admin/dashboard" />;
      } else {
        return <Redirect to="/user/dashboard" />;
      }
    }
    if (isAuthenticated()) {
      return <Redirect to="/" />;
    }
  };

1 个答案:

答案 0 :(得分:0)

由于它是异步的并且您必须等待数据,因此有一点数据未定义,这就是它引发错误的原因。尝试改变

if(data.error) {

if(data && data.error) {