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: diff of list [a,b,c,d] and [e,b,b,f],error happened and make vue-router cant update #13110

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

Conversation

loadingjoke
Copy link

What kind of change does this PR introduce? (check at least one)

  • Bugfix
  • Feature
  • Code style update
  • Refactor
  • Build-related changes
  • Other, please describe:

Does this PR introduce a breaking change? (check one)

  • Yes
  • No

If yes, please describe the impact and migration path for existing applications:

The PR fulfills these requirements:

If adding a new feature, the PR's description includes:

  • A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Other information:

@loadingjoke
Copy link
Author

When updating an existing list, if the same key exists in the new list and the node with the same key value also exists in the old list, after diffing, it will be marked as undefined in oldCh, causing the new list with the same key to report an error in isSameNode (read 'key' from undefined)

@loadingjoke
Copy link
Author

At the same time, this issue also causes the vue router to be unable to jump normally, as the watcher updates when the "app. _route" changes. In the “watcher.run”, due to the execution error and capture of "this. getter. call (vm, vm)", the subsequent ”resetSchedulerState“ cannot be executed, and the "waiting" state remains true. Finally, the “registerInstance” cannot be executed. Although the URL is updated, the page cannot find “instances” and cannot be updated

@loadingjoke
Copy link
Author

test-demo
vue2.7_bug-test.zip

@loadingjoke loadingjoke changed the title fix: diff时新节点存在key重复并且旧节点也和该key重复 fix: diff of list [a,b,c,d] and [e,b,b,f],error happened and make vue-router cant update Nov 3, 2023
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.

1 participant