未捕获的类型错误:(0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useHistory)不是函数(React.js)

5 javascript node.js reactjs react-router react-router-dom

我使用React Router Version 6然后运行下面的代码:

import { useHistory } from 'react-router-dom'

function Test() {
  const history = useHistory();
  history.push('/');
  history.replace('/');
  history.goBack();
}

Test();
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

未捕获的类型错误:(0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useHistory)不是函数

我的代码有什么错误吗?

小智 3

对于React Router Version 6,使用“useNavigate”而不是React Router Version 5“useHistory”

因此,替换您的代码(React Router Version 5):

import { useHistory } from 'react-router-dom'

function Test() {
  const history = useHistory();
  history.push('/');
  history.replace('/');
  history.goBack();
}

Test();
Run Code Online (Sandbox Code Playgroud)

使用此代码(React Router Version 6):

import { useNavigate } from 'react-router-dom'

function Test() {
  const navigate = useNavigate();
  navigate('/');                    // Equivalent to "history.push('/');"
  navigate('/', { replace: true }); // Equivalent to "history.replace('/');"
  navigate(-1);                     // Equivalent to "history.goBack();"
}

Test();
Run Code Online (Sandbox Code Playgroud)