繁体   English   中英

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'type') redux reactjs

[英]Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'type') redux reactjs

从 firebase 和 firestore 发送身份验证用户时出现以下错误。 我正在使用 redux 工具包,我正在使用 Firestore 进行身份验证注册用户,然后将用户信息存储在 redux 中,因此发送操作以发送用户信息。 在 firebase 中,我可以看到用户正在注册,但无法在 redux 中看到有效负载并出现此错误。

错误截图

在此处输入图像描述

store.js

import { configureStore } from '@reduxjs/toolkit';
import userReducer from '../features/counter/userSlice';

export const store = configureStore({
  reducer: {
    user: userReducer,
  },
});

userSlice.js

import { createSlice } from '@reduxjs/toolkit';
// import { fetchCount } from './counterAPI';

const initialState = {
  user: null,
};


export const userSlice = createSlice({
  name: 'user',
  initialState,


  reducers: {

    login: (state, action) => {
      return state.user = action.payload;
    },

    logout: (state) => {
      return state.user = null;
    },

  },

});

export const { login, logout } = userSlice.actions;

//selector
export const selectUser = (state) => state.user.user;


export default userSlice.reducer;

登录.js

import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { auth } from './firebase';
import './Login.css'
import login from './features/counter/userSlice'





function Login() {

    const [name, setName] = useState("")
    const [email, setEmail] = useState("")
    const [password, setPassword] = useState("")
    const [pic, setPic] = useState("")


    const dispatch = useDispatch();

    const register = () => {

        if (!name) {
            return alert('Please enter a full name')
        }

        auth.createUserWithEmailAndPassword(email, password)
            .then((userAuth) => {
                userAuth.user
                    .updateProfile({
                        displayName: name,
                        photoURL: pic,
                    })
                    .then(() => {
                        dispatch(login({
                            email: userAuth.user.email,
                            uid: userAuth.user.uid,
                            displayName: name,
                            photoUrl: pic,
                        })
                        );
                    });
            })
            .catch((error) => alert(error));
    }



    const loginToApp = (e) => {
        e.preventDefault();


    }



    return (
        <div className='login'>

            <h2>You are not logedin</h2>
            <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSTv5NTn4Iw_QsC7kW0Lbw3LrlPcPAHso2l9A&usqp=CAU" alt='logo' />
            <form>
                <input placeholder='Full name (Required if registering)' type="text" value={name} onChange={e => setName(e.target.value)} />
                <input placeholder='Profile pic (Optional)' type="text" value={pic} onChange={e => setPic(e.target.value)} />
                <input placeholder='Email (Required if registering)' type="email" value={email} onChange={e => setEmail(e.target.value)} />
                <input placeholder='Password (Required if registering)' type="password" autoComplete='off' value={password} onChange={e => setPassword(e.target.value)} />
                <button onClick={loginToApp}>Sign In</button>

            </form>
            <p>Not a member?{" "}
                <span className='login__register' onClick={register}>Register Now</span>

            </p>


        </div>
    );
}

export default Login;

我今天遇到了这个错误,这是由于在Login.js文件中输入了错误的登录操作。更改

import login from './features/counter/userSlice'

import { login } from './features/counter/userSlice'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM