InertiaJS中如何传递参数?

问题描述 投票:0回答:2

在设置路由并通过 Inertia 调用它后,我遇到了 URL 如何在浏览器中显示的问题。

如果我手动输入,来自

Route::get('/blogs/{post}', [BlogController::class, 'show']);
的路线
web.php
工作正常,例如
localhost:3000/blogs/1

但是,如果我单击该按钮,

<Link>
将不起作用,而是 URL 显示为
http://localhost:3000/blogs/?post=1
。有没有办法从 URL 中删除
?post=

下面是我的 Vue 组件,显示了

<Link>

<div class="wrapper" v-if="blogs.length">
          <div class="blog" v-for="blog in blogs" :key="blog">
            <Link href="/blogs/" :data="{post:blog.id}">
              <small>posted by: {{ blog.id }}</small>
              {{ blog.title }}
            </Link>
            <button type="button" @click="destroy($event, blog.id)">
                Delete post
            </button>
          </div>
</div>

请注意,我正在关注 https://inertiajs.com/links 中的文档。

laravel vue.js frontend inertiajs
2个回答
0
投票

问题是你传递了

data
道具。这将导致对象作为请求的有效负载传递。这就是为什么它最终作为查询字符串附加到路由中。

// change this
<Link href="/blogs/" :data="{post:blog.id}">

// to this
<Link href="/blogs/your-blog-id-goes-here" >

0
投票

致未来的开发者,现在更方便了。

route('blogs.update', { post: blog.id })

如有需要请更改路线名称和参数

© www.soinside.com 2019 - 2024. All rights reserved.