this post was submitted on 11 Sep 2023
2 points (100.0% liked)

Vue.js

463 readers
10 users here now

founded 1 year ago
MODERATORS
 

I haven't found a good way to do this. Basically the props that you can pass as params, end up getting displayed in the url as resource or queries.

The above code makes the url look like "url/id/1"

What if i want to pass multiple props like "id" and " name" through router-link but don't want the url to have the "name" field?

Hopefully, someone can answer this. Thank you.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago (1 children)

We'll why do you want this? If you want (in this context) "invisible" data shared with different components use a store or a composable. If you want parameters in your url that have an effect on the content that is displayed, use the router params. Mixing both requirements would let to 1. User enters URL with name and ID 2. A piece of code rewrites the url, memorizes the name and removes that info from the url. That's a SEO nightmare.

I guess the problem is a perspective problem: that's no pollution, that's a clear description of what the user will see. Also the user could copy the url, send it to a colleague and this colleague would see a different page if you want to "cleanup" the url.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

I understand that the cleanup thing is a bad idea. I had a really simple use case where i have a list of persons fetched from a database with their id, names and a link for each displayed using v-for. The link for each person is a router link which when clicked redirects to respective person/:id.

I want to display some stuff on this new component but didn't want to make the api call to fetch the person again from the database. This is why i wanted to pass the name as well in the props through the router link. But as you said maybe I should use pinia or some state management library for use cases like this?

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago) (1 children)

Yep, definitely a job for pinia. But a second fetch doesn't seem unreasonable as well. The "list page" fetches an API endpoint to get a basic list of users, the "detail page" fetches another API endpoint returning a single user with the detailed information. If you are worried if you are doing to much requests, you also may have a look on Nuxt. With the SSR functionality it will save you multiple requests made.

[–] [email protected] 2 points 1 year ago

I didn't have much idea about these so was trying to use the router itself. I'll look into nuxt and pinia and see which ones might be ideal for my use cases. Thanks a lot for answering!