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]);