ReactJS-无法使用useCallback重定向到页面
我是一个新的反应者,正在尝试在函数的一部分被执行后重定向到一个页面。我无法按照我的项目复制准确的代码,因此我创建了一个演示,其中代码如下:ReactJS-无法使用useCallback重定向到页面,reactjs,Reactjs,我是一个新的反应者,正在尝试在函数的一部分被执行后重定向到一个页面。我无法按照我的项目复制准确的代码,因此我创建了一个演示,其中代码如下: import React, { useContext, useCallback } from "react"; import { Link, useHistory } from "react-router-dom"; const account = true; export default function App
import React, { useContext, useCallback } from "react";
import { Link, useHistory } from "react-router-dom";
const account = true;
export default function App() {
const callBack = useCallback(history.push("/login"), [history]);
const handleLogin = () => {
console.log("handleLogin");
if (account) {
localStorage.removeItem("testCookie");
}
callBack(); // needs to redirect to /login on this line
};
return (
<div>
<button onClick={handleLogin}>click</button>
</div>
);
}
有人能给我指出解决这个问题的正确方向吗?我想知道是否有明显的错误,或者是否有不同的解决方案可以重定向到另一个页面。
useCallback
需要一个函数。当前您正在提供历史记录。按(“/login”)
返回void
因此,要在代码中回答您的问题,您应该将其表述为useCallback(()=>history.push(“/login”),[history])代码>
在StackBlitz中,这两种方式都不起作用,因为(窗口。
)历史记录。推送
不是一种功能。我想您应该使用react router dom的历史
对象(它确实有推送
功能)
真不敢相信我错过了,谢谢
Argument of type 'void' is not assignable to parameter of type '(...args: any[]) => any'. TS2345
export default function App() {
const history = useHistory();
const callBack = useCallback(() => history.push("/login"), [history]);