You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目onChange方法中this.props.history.push不生效如何解决?

问题原因

你的代码一共存在4处导致跳转失效或存在隐患的问题:

  • 事件回调函数内部多嵌套了一层未执行的箭头函数:触发ageSelect/jobSelect时仅创建了新箭头函数,并未实际执行history.push逻辑
  • filter_age跳转路径缺少开头的斜杠,会被识别为相对路径拼接在当前URL后
  • App组件未被Route组件直接渲染,默认无法获取this.props.history对象
  • 最后404路由绑定App组件会导致路由匹配失败时无限递归渲染App

修复方案

第一步:用withRouter高阶组件包裹App组件,注入路由属性

在App.js的导入部分添加withRouter引入:

import { Route, Link, Switch, withRouter } from 'react-router-dom';

修改导出语句为:

export default withRouter(App);

第二步:删除事件回调里多余的箭头函数,补全路径斜杠

修改ageSelect和jobSelect方法:

ageSelect(e) {
  this.props.history.push(`/filter_age/${e.target.value}`);
}

jobSelect(e) {
  this.props.history.push(`/filter_job/${e.target.value}`);
}

第三步:替换404路由的绑定组件,避免死循环

你可以单独写一个NotFound组件,或者暂时调整为提示内容,不要绑定App:

<Route path="*" render={() => <h2>页面不存在</h2>} />

内容的提问来源于stack exchange,提问作者Vasila_M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 19:54:02