【发布时间】:2021-07-25 21:20:21
【问题描述】:
我已经建立了一个登录页面,在填写用户名和密码并点击提交按钮时,它会调度基本上转到后端的操作并检查用户名和密码是否有效。我正在使用React 和redux 这是我下面的登录页面
login.js(简体)
import LoginHandle from '../login/LoginHandle'
function userLogin(event) {
event.preventDefault()
const username = document.getElementById("username").value
const password = document.getElementById("password").value
LoginHandle(username, password)
}
const Login = () => {
return (
<div className="flex-row align-items-center">
<form onSubmit={(e) => userLogin(e)}>
<h1>Login</h1>
<input id="username" type="email" placeholder="Username" required/>
<input id="password" type="password" placeholder="Password" required/>
<button type="submit" className="px-4">Login</button>
</form>
</div>
)
}
export default Login
LoginHandle.js(简化版)
import {useDispatch, useSelector} from 'react-redux'
import {getLoginStatus} from '../actions/loginAction'
const LoginHandle = (username, password) => {
const dispatch = useDispatch()
dispatch(getLoginStatus(username, password))
const loginState = useSelector(state=> state.loginStatus)
if(loginState.loading) {
console.log("please wait")
}
// .... rest of the logic
}
export default LoginHandle
如您所见,我尝试发送操作,然后检查状态以从后端获得确认。但是我得到了这个错误
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:...
我做错了什么?
【问题讨论】:
-
钩子用于功能组件。您在一个简单的函数中调用它们,这是不允许的,错误意味着什么。
-
@nil 您好,nil,是的,我想将登录详细信息的处理分离到一个单独的文件中,而不是在
Login组件本身中进行。有可能吗?
标签: reactjs react-redux react-hooks redux-thunk