Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查redux hook中dispatch的返回值_Javascript_Reactjs_Redux_React Hooks - Fatal编程技术网

Javascript 如何检查redux hook中dispatch的返回值

Javascript 如何检查redux hook中dispatch的返回值,javascript,reactjs,redux,react-hooks,Javascript,Reactjs,Redux,React Hooks,我正在尝试使用react和redux创建用户登录页面 //loginAction.js 导出函数loginRequest(用户){ 返回{ 类型:types.LOGIN\u请求, 用户 } } 导出功能登录成功(用户){ 返回{ 类型:types.LOGIN\u成功, 用户 } } 导出函数登录失败(错误){ 返回{ 类型:types.LOGIN\u失败, 犯错误 } } 导出功能登录(用户名、密码){ 返回功能(调度){ 调度(loginRequest({username})); userAp

我正在尝试使用react和redux创建用户登录页面

//loginAction.js
导出函数loginRequest(用户){
返回{
类型:types.LOGIN\u请求,
用户
}
}
导出功能登录成功(用户){
返回{
类型:types.LOGIN\u成功,
用户
}
}
导出函数登录失败(错误){
返回{
类型:types.LOGIN\u失败,
犯错误
}
}
导出功能登录(用户名、密码){
返回功能(调度){
调度(loginRequest({username}));
userApi.userLogin(用户名、密码)
.那么(
用户=>{
调度(登录成功(用户));
},
错误=>{
分派(登录失败(err.toString()))
}
)
}
}
//userReducer.js
常量登录=(状态=初始状态,操作)=>{
开关(动作类型){
case types.LOGIN\u成功:
案例类型.LOGIN\u请求:
返回{
洛格丁:没错,
用户:action.user
}
案例类型。登录失败:
返回{}
违约:
返回状态
}
};
LoginPage.js
从“React”导入React,{useState,useffect};
从“道具类型”导入道具类型;
从'react redux'导入{useDispatch,useSelector};
从'react router dom'导入{Redirect};
从“../redux/actions/loginAction”导入{login}
常量登录页面=()=>{
常量[inputs,setInputs]=useState({
用户名:“”,
密码:“”
})
const[isauthenticated,setIsAuthenticated]=useState(false);
const{username,password}=输入
const dispatch=usedpatch();
const loggingIn=useSelector(state=>state.user);
常数handleChange=(e)=>{
常量{name,value}=e.target;
setInputs(输入=>({…输入,[名称]:值}))
}
const handleSubmit=(事件)=>{
event.preventDefault();
//setIsAuthenticated(真)
//这条线需要改进
如果(用户名和密码){
发送(登录名(用户名、密码))
}
}
返回(
{
我被认证了?
:
(
提交
)
}
)
}
导出默认登录页面;
LoginPage
组件中,我有
isAuthenticated
状态,当其操作返回“LOGIN\u SUCCESS”时,我想将其设置为true,但并不总是设置为true。
有没有办法像这样检查它

const handleSubmit=(事件)=>{
event.preventDefault();
//setIsAuthenticated(真)
如果(用户名和密码){
//我能做什么?
if(发送(登录(用户名、密码))='types.login\u SUCCESS'){
SetIsAuthenticated(真)
}
}
}
我会这样写的,在登录成功之前你还没有登录。在loginform中,您应该只检查props-loggedIn和user

const login = (state=initialState, action) => {
    switch(action.types){
        case types.LOGIN_REQUEST:
            return  {
                loggedIn: false,
                user: null
            }
        case types.LOGIN_SUCCESS:
            return  {
                loggedIn: true,
                user: action.user
            }
        case types.LOGIN_FAILURE:
            return  {
                loggedIn: false,
                user: null
            }
        default:
            return state
    }
};