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

react-router v5调用history.push传参报TypeScript类型不匹配错误如何解决?

报错原因

react-router v5 的 history.push 方法接收的 location 对象,自定义状态参数必须放在专属的 state 字段内,不允许直接平铺到 location 对象的根层级。你虽然已经给 RouteComponentProps 传入了自定义的 LocationState 泛型,但这个泛型约束的是 state 字段的类型,并不会给 location 根对象扩展额外属性,你直接把 item 写在和 pathname 同级的位置,属于 PartialPath 类型未定义的属性,因此触发了类型不兼容报错。

修复方法

调整 history.push 的传参结构,把自定义的 item 放到 state 字段内即可:

history.push({
  pathname: `/orders/${orderId}/items/${row.id}`,
  state: {
    item: row
  }
});

修改后你在目标路由页面可以直接通过 location.state.item 拿到类型为 Item 的数据,完全匹配你之前定义的 LocationState 类型约束,不会再触发类型报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:04