Commit 9c43c741316bfe864680fff3b67601748e4ae02e

Authored by Kirk Lin
Committed by GitHub
1 parent c516d392

Revert "fix(deepMerge): fix recursive merge data without removing duplicate bugs (#2831)" (#2844)

This reverts commit 7ca007ec.

Co-authored-by: jinmao88 <50581550+jinmao88@users.noreply.github.com>
Showing 1 changed file with 10 additions and 1 deletions
src/utils/index.ts
1   -import type { App, Component } from 'vue';
2 1 import type { RouteLocationNormalized, RouteRecordNormalized } from 'vue-router';
  2 +import type { App, Component } from 'vue';
3 3  
4 4 import { intersectionWith, isEqual, mergeWith, unionWith } from 'lodash-es';
5 5 import { unref } from 'vue';
... ... @@ -52,6 +52,14 @@ export function deepMerge&lt;T extends object | null | undefined, U extends object
52 52 target: U,
53 53 mergeArrays: 'union' | 'intersection' | 'concat' | 'replace' = 'replace',
54 54 ): T & U {
  55 +
  56 + return mergeWith(cloneDeep(target), source, (objValue, srcValue) => {
  57 + if (isObject(objValue) && isObject(srcValue)) {
  58 + return mergeWith(cloneDeep(objValue), srcValue, (prevValue, nextValue) => {
  59 + // 如果是数组,合并数组(去重) If it is an array, merge the array (remove duplicates)
  60 + return isArray(prevValue) ? unionWith(prevValue, nextValue, isEqual) : undefined;
  61 + });
  62 +
55 63 if (!target) {
56 64 return source as T & U;
57 65 }
... ... @@ -70,6 +78,7 @@ export function deepMerge&lt;T extends object | null | undefined, U extends object
70 78 return source as T & U;
71 79 default:
72 80 throw new Error(`Unknown merge array strategy: ${mergeArrays}`);
  81 +
73 82 }
74 83 }
75 84 if (isObject(target) && isObject(source)) {
... ...