vue icon indicating copy to clipboard operation
vue copied to clipboard

fix: diff of list [a,b,c,d] and [e,b,b,f],error happened and make vue-router cant update

Open loadingjoke opened this issue 7 months ago • 3 comments

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

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

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

  • [ ] Yes
  • [x] No

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

The PR fulfills these requirements:

  • [x] It's submitted to the main branch for v2.x (or to a previous version branch)
  • [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
  • [x] All tests are passing: https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#development-setup
  • [ ] New/updated tests are included

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 avatar Nov 01 '23 11:11 loadingjoke

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 avatar Nov 01 '23 11:11 loadingjoke

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 avatar Nov 01 '23 11:11 loadingjoke

test-demo vue2.7_bug-test.zip

loadingjoke avatar Nov 01 '23 12:11 loadingjoke