Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(useRouteQuery,useRouteParams): prevent reset on other scope dispose #3418

Merged

Conversation

s-montigny-desautels
Copy link
Contributor

@s-montigny-desautels s-montigny-desautels commented Sep 21, 2023

  • No longer cache params and queries globaly
  • Use queue to synchonise multiple changes in the same tick
  • Use one queue per router instance
  • Only apply route change on time if multiple change in the same tick
  • Cache only the needed param/query inside the composable
  • Reset the cache to undefined on scope dispose

Before submitting the PR, please make sure you do the following

  • Read the Contributing Guidelines.
  • Read the Pull Request Guidelines.
  • Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
  • Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
  • Ideally, include relevant tests that fail without this PR but pass with it.
⚠️ Slowing down new functions

Warning: Slowing down new functions

As the VueUse audience continues to grow, we have been inundated with an overwhelming number of feature requests and pull requests. As a result, maintaining the project has become increasingly challenging and has stretched our capacity to its limits. As such, in the near future, we may need to slow down our acceptance of new features and prioritize the stability and quality of existing functions. Please note that new features for VueUse may not be accepted at this time. If you have any new ideas, we suggest that you first incorporate them into your own codebase, iterate on them to suit your needs, and assess their generalizability. If you strongly believe that your ideas are beneficial to the community, you may submit a pull request along with your use cases, and we would be happy to review and discuss them. Thank you for your understanding.


Description

Fix #3360

Additional context


🤖 Generated by Copilot at 82eb049

This pull request improves the performance and reliability of the useRouteParams and useRouteQuery functions by using weak maps to store router-specific state instead of global caches. It also adds and fixes some test cases for these functions to verify their behavior.

🤖 Generated by Copilot at 82eb049

  • Refactor useRouteParams and useRouteQuery functions to use router-specific queues instead of global caches (link,link,link,link,link,link,link,link)
  • Use local variables to store param and query values and set them to undefined when scope is disposed (link,link)
  • Use weak maps to store queues of param and query changes for each router instance (link,link)
  • Trigger route change in next tick after adding param or query value to queue (link,link)
  • Check queue emptiness and clear queue after applying new param or query values to route (link,link)
  • Use local variables instead of maps to get and set param and query values in computed refs (link,link)
  • Use local variables instead of maps to sync param and query values with route in watcher (link,link)
  • Add test cases for useRouteParams and useRouteQuery to check that they are not reset to default value when scope is disposed from another scope (link,link,link)
    • Fix typo in test case name for useRouteQuery (link)

- No longer cache params and queries globaly
- Use queue to synchonise multiple changes in the same tick
- Use one queue per router instance
- Only apply route change on time if multiple change in the same tick
- Cache only the needed param/query inside the composable
- Reset the cache to undefined on scope dispose
@antfu antfu merged commit 771e7ff into vueuse:main Nov 9, 2023
4 checks passed
@s-montigny-desautels s-montigny-desautels deleted the fix/@vueuse/router-scope-reset branch November 9, 2023 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Router] useRouteParams value reset to default value
2 participants