React注册组件提交表单报错Cannot read properties of undefined (reading 'push')
错误原因
你当前使用的是React Router v6版本,useNavigate()接口返回值是可直接调用的导航函数,并非v5及更低版本中useHistory()返回的带push方法的history实例,调用不存在的push方法就会触发该类型错误。
修复方案
仅需要修改两处代码即可:
- 为了语义更清晰,建议把
useNavigate的返回值变量名从history改为navigate,避免和旧版API混淆 - 把注册成功后的跳转逻辑从
history.push('/login')改为直接调用navigate('/login')
修正后的核心代码片段如下:
// 声明导航函数 const navigate = useNavigate(); // 注册成功后跳转 if(data.status === 'ok') { navigate('/login'); }
如果需要跳转时替换当前历史记录(比如避免用户点后退回到提交前的注册页),可以传入第二个参数:
navigate('/login', { replace: true });
内容的提问来源于stack exchange,提问作者Chidambaram Natarajan
相关产品推荐
相关产品推荐

