React.js中出现Type Error: Object(...) is not a Function错误求助——useHistory调用异常(React及React-Dom版本已升级)
解决React中Type Error: Object(...) is not a Function的问题
我一眼就发现了两处导致这个错误的问题,咱们一步步来修复:
1. useState的解构方式完全错了
useState Hook返回的是数组,而不是对象,你用对象解构const {login,setLogin} = useState(...)肯定会报错——数组元素是按顺序排列的,根本没有login或setLogin这些键名。
正确的用法是用数组解构:
// 把对象解构换成数组解构 const [login, setLogin] = useState({email:"",password:""});
2. useHistory在React Router v6中已被废弃
如果你的项目用的是React Router v6版本,useHistory这个钩子已经被移除了,取而代之的是useNavigate。这也是触发"Object(...) is not a Function"错误的核心原因之一。
修改方式如下:
// 先导入useNavigate(替换原来的useHistory) import { useNavigate } from 'react-router-dom'; // 在组件内初始化 const navigate = useNavigate(); // 原来的history.push('/target-path')改成这样: navigate('/target-path'); // 返回上一页可以用: navigate(-1);
把这两处修改完成后,你的错误应该就能彻底解决了。如果还是有问题,可以检查一下react-router-dom的版本,v6及以上必须用useNavigate,v5及以下才保留useHistory。
内容的提问来源于stack exchange,提问作者Rahul Mane
相关产品推荐
相关产品推荐

