我的 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
钩子?
例如:
我的 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
钩子?
例如: