Pass disposable data through route navigation (looking for alternative to deprecated route.params)
#2010
Unanswered
frederikheld
asked this question in
Help and Questions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hey everyone,
I just stumbled across the issue that
route.paramsis empty in the view that was routed to. After some research I found this: https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#important-noteI totally understand the reasoning behind this IF you want to preserve your params. The thing is that I don't want to preserve them.
My use case is as follows: User navigates to
/groups/:idwith an invalid id. After the database lookup returned no entry, the user is being routed to/groupsand a snackbar should appear that tells them "This group does not exist".In the past I solved this by passing the error message as param which was not preserved on purpose because this message should not appear again if the user refreshes the browser in
/groups.The only thing I came up with is storing the message somewhere in pinia but then I would need to import the store in both views, which feels a bit too much effort for just passing a simple disposable piece of data that is only relevant in the context of a routing action.
I also tried using
stateas it is recommended in the above changelog but I did not figure out how to read it in the target view,route.stateisundefined.What alternative to the deprecated
route.paramsthat allows me to attach one-time data to a programmatic routing action would you recommend?P. S.:
paramsis indeed the wrong term for what I'm looking for as params are a defined part of an url. So it makes sense that it was removed. But I think there should be a mechanic that allows to pass disposable data, whatever it would be named.Edit: I figured out how to access
route.statefrom the target: it is available inhistory.state. Odd, but okay. Unfortunately it is not the solution I am looking for as this information is being preserved through a browser refresh.Beta Was this translation helpful? Give feedback.
All reactions