LoginSignup
12
8

More than 3 years have passed since last update.

router-linkで動的なURLを生成する

Last updated at Posted at 2019-09-19

router-linkで動的なURLを生成する方法

参考にしました。

vue-router側

router.js

{ path: '/tasks/:id', name: 'tasks', component: TaskEdit }

component側

component.vue
// to=""ではなく、 :to="{{ }}"とする to=""では変数展開が出来ない
// nameとparamsを指定する

// 省略しているがv-forの中なので、
// paramに、task.idを渡すことで、それぞれのtaskへのリンクを生成出来る

<td><router-link :to="{name: 'tasks', params: {id: task.id}}" class="signup-link">task edit</router-link></td>

スクリーンショット 2019-09-20 0.32.32.png

もし

/tasks/:id/edit

のようなURLにしたいなら、

router.js
{ path: '/tasks/:id/edit', name: 'tasks', component: TaskEdit }

とすれば良い。
https://www.ritolab.com/entry/180

さらに、

/tasks/:id/edit/:hoge_id

リソース/:id/リソース/:hoge_id
という風にしたいなら、

1
router-linkのparamsに、id部分に合致するパラメータを指定

2
router.jsのpathへ
リソース/id/リソース/hoge_id
のように記述する

component.vue
<td><router-link :to="{name: 'tasks', params: {id: task.id, edit_id: 10}}" class="signup-link">task edit</router-link></td>
router.js
{ path: '/tasks/:id/edit/:edit_id', name: 'tasks', component: TaskEdit }

上記の場合、

task/1/edit/10

というリンクが生成されます。

スクリーンショット 2019-09-20 7.46.39.png

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8