我的 reducer 函数有时调用一次,有时调用两次,我不明白是什么问题.. :(

my reducer functinos calls sometimes once, sometimes twice and i dont understand what is the problem.. :(

我的 reducer functinos 有时调用一次,有时调用两次,我不明白这是什么问题.. :( 我的 nodejs 服务器有时会收到 2 个请求,有时会收到一个请求,但我只告诉应用程序在按下按钮后立即发送一个请求。 我知道我有一个糟糕的错误处理,只是尝试使用上下文和 reducer..

import AuthContext from "./AuthContext";
import React, { useCallback, useEffect, useReducer } from "react";
import axios from 'axios'

function AuthContextProvider(props) {

    const AuthManager = useCallback((state, action) => {
        if(action.type === "signup") {
            axios.post("http://localhost:3001/users/signup", {...action.payload}).then(res => res.data).then(data => {
                console.log(data);
                return {
                    login: true
                }
            })
        } else if(action.type === "login") {
            axios.post("http://localhost:3001/users/login", {...action.payload}).then(res => res.data).then(data => {
                console.log(data);
                return {
                    login: true,
                    user: data.user
                }
            })
        }

        
    }, [])

    const [state, dispatch] = useReducer(AuthManager, {
        login: false,
    })

    const authObject = {
        login: false,
        signupHandler: (account) => dispatch({type: 'signup',  payload: {...account}}),
        loginHandler: (account) => dispatch({type: 'login',  payload: {...account}}),

    }

    return <AuthContext.Provider value={authObject}>{props.children}</AuthContext.Provider>
}

export default AuthContextProvider

你在哪里调用这些动作? 另外,你为什么不把你的减速器放在你的组件之外而不是使用 useCallback 钩子?

例如: