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

React带参数跳转页面:Stripe支付成功后history.push参数失效问题

问题根因定位
  • 跳转生成的异常URL,本质是JS字符串插值语法使用错误:
    你编写跳转路径时,用单引号包裹了带${productId}的内容,但JS中单引号、双引号包裹的是普通字符串,不会解析内部的${变量}占位符,只会把${productId}当成纯文本字符处理;这类字符经浏览器URL编码后,就会出现你看到的$%productId%7D形式(其中{会被编码为%7B,}会被编码为%7D)。
  • 你在提交后端表单时productId能正常传入,是因为formData.append('productId', productId)直接引用了变量本身,没有涉及字符串内部的插值逻辑,说明productId变量本身是有值的,问题只出在跳转路径的字符串写法上。
正确的带参跳转实现

在保证React Router的history对象正常可用的前提下,两种写法都可以实现正确的参数替换:

  • 改用反引号(`,键盘左上角ESC按键下方的符号)包裹模板字符串,让JS正确解析插值:
    history.push(`/user/${productId}/product-detail`);
    
  • 用纯字符串拼接构造路径,避免引号语法混淆:
    history.push('/user/' + productId + '/product-detail');
    
修正后的业务代码对应片段
.then(r => {
  console.log(r);
  if (r.status === 201) {
    self.setState({ isPaymentPending: true });
    // 替换原错误的跳转行
    history.push(`/user/${productId}/product-detail`);
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 18:06:07