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

feat(refDebounced): add support for objects #3969

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

XavierChevalier
Copy link

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.

Description

Objects did not work with refDebounced. An object need to be deeply clone to avoid JavaScript memory references.
Added a deep parameter to deeply watch object changes.

Closes: #3158

@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label May 14, 2024
@XavierChevalier
Copy link
Author

Any news on this?

@@ -119,3 +119,7 @@ export function objectEntries<T extends object>(obj: T) {
export function getLifeCycleTarget(target?: any) {
return target || getCurrentInstance()
}

export function deepClone<T>(obj: T): T {
return JSON.parse(JSON.stringify(obj))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a safe clone, and the result might not be as expected.

Please follow the pattern like this:

/**
* Clone when taking a snapshot, shortcut for dump: JSON.parse(JSON.stringify(value)).
* Default to false
*
* @default false
*/
clone?: boolean | CloneFn<Raw>

@antfu
Copy link
Member

antfu commented Jul 17, 2024

Related to #3705 - I think it's better to design the API and implement on both refDebounced and refThrottled to keep the API consistent

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size:M This PR changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

refDebounced doesn't work with objects
2 participants