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

如何在InertiaJS中正确传递路由参数避免生成查询字符串

问题原因

Inertia 的 <Link> 组件中,data 属性在 GET 请求场景下会自动把参数转为查询参数拼接到 URL 尾部,不会自动匹配 Laravel 定义的路由路径参数{post},这是出现?post=1的核心原因。

修复方案

你只需要把博客ID直接拼到href路径里,不需要用data传递路由参数即可,两种常用写法如下:

写法1:直接拼接路径

直接把ID拼入访问地址,修改<Link>代码如下:

<Link :href="`/blogs/${blog.id}`">
  <small>posted by: {{ blog.id }}</small>
  {{ blog.title }}
</Link>

写法2:用路由别名生成路径(更推荐)

如果你给路由定义了别名(在web.php中给路由加->name('blogs.show')),配合Ziggy扩展可以直接在前端调用路由函数生成路径,后续路由规则修改不需要同步改前端硬编码路径:

<Link :href="route('blogs.show', blog.id)">
  <small>posted by: {{ blog.id }}</small>
  {{ blog.title }}
</Link>

补充说明

如果需要传递额外不需要出现在URL里的参数,可以用method="post"配合data属性传递,这部分参数会放入请求体,不会暴露在URL中,也不会影响路由路径匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:04