Reactjs 如何在useEffect()钩子中使用useDispatch()钩子?
我正在我的功能应用程序组件中使用useffect()钩子来检查身份验证是否已过期,以便我可以调度一个操作来删除持久化身份验证状态(使用redux persist)。代码如下:Reactjs 如何在useEffect()钩子中使用useDispatch()钩子?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在我的功能应用程序组件中使用useffect()钩子来检查身份验证是否已过期,以便我可以调度一个操作来删除持久化身份验证状态(使用redux persist)。代码如下: import React,{useffect}来自“React”; 从“react Router dom”导入{BrowserRouter as Router,Switch,Route}; 从“react redux”导入{useDispatch,useSelector}; 从“/app/state/authSlice”导
import React,{useffect}来自“React”;
从“react Router dom”导入{BrowserRouter as Router,Switch,Route};
从“react redux”导入{useDispatch,useSelector};
从“/app/state/authSlice”导入{signout};
从“/app/pages/sign”导入登录;
从“/app/pages/Landing”导入登录;
常量应用=(道具)=>{
const dispatch=usedpatch();
const auth=useSelector((state)=>state.auth);
const expired=新日期(Date.now())>=新日期(auth.expires);
useffect(()=>{
常量main=()=>{
如果(过期){
log(“身份验证已过期”);
签派;
}
};
main();
},[发送,过期];
返回(
);
};
导出默认应用程序;
现在,当过期时间已过时,我将获得
Auth expired
控制台日志,但调度没有发生,过期时间过后我的状态仍然存在。我知道注销操作配置正确,因为我在另一个组件onClick中使用了它。这只是一个输入错误。我忘了调用注销()
操作创建者
请更正下面的代码
import React, { useEffect } from "react";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import { useDispatch, useSelector } from "react-redux";
import { signout } from "./app/state/authSlice";
import SigninPage from "./app/pages/Signin";
import LandingPage from "./app/pages/Landing";
const App = (props) => {
const dispatch = useDispatch();
const auth = useSelector((state) => state.auth);
const expired = new Date(Date.now()) >= new Date(auth.expires);
useEffect(() => {
const main = () => {
if (expired) {
console.log("Auth expired.");
dispatch(signout());
}
};
main();
}, [dispatch, expired]);
return (
<Router>
<Switch>
<Route exact path="/" {...props} component={LandingPage} />
<Route exact path="/signin" {...props} component={SigninPage} />
</Switch>
</Router>
);
};
export default App;
import React,{useffect}来自“React”;
从“react Router dom”导入{BrowserRouter as Router,Switch,Route};
从“react redux”导入{useDispatch,useSelector};
从“/app/state/authSlice”导入{signout};
从“/app/pages/Signin”导入登录页;
从“/app/pages/Landing”导入登录页面;
常量应用=(道具)=>{
const dispatch=usedpatch();
const auth=useSelector((state)=>state.auth);
const expired=新日期(Date.now())>=新日期(auth.expires);
useffect(()=>{
常量main=()=>{
如果(过期){
log(“身份验证已过期”);
签派(signout());
}
};
main();
},[发送,过期];
返回(
);
};
导出默认应用程序;