From: Evan You Date: Tue, 27 Jul 2021 22:34:15 +0000 (-0400) Subject: feat: unwrap refs in toDisplayString X-Git-Tag: v3.2.0-beta.6~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f994b974c0a1ac95d313c8ccfc258c6ba3910b6e;p=thirdparty%2Fvuejs%2Fcore.git feat: unwrap refs in toDisplayString --- diff --git a/packages/shared/__tests__/toDisplayString.spec.ts b/packages/shared/__tests__/toDisplayString.spec.ts index a998904b1a..f9e20841e4 100644 --- a/packages/shared/__tests__/toDisplayString.spec.ts +++ b/packages/shared/__tests__/toDisplayString.spec.ts @@ -1,3 +1,4 @@ +import { computed, ref } from '@vue/reactivity' import { toDisplayString } from '../src' describe('toDisplayString', () => { @@ -20,6 +21,17 @@ describe('toDisplayString', () => { expect(toDisplayString(arr)).toBe(JSON.stringify(arr, null, 2)) }) + test('refs', () => { + const n = ref(1) + const np = computed(() => n.value + 1) + expect( + toDisplayString({ + n, + np + }) + ).toBe(JSON.stringify({ n: 1, np: 2 }, null, 2)) + }) + test('native objects', () => { const div = document.createElement('div') expect(toDisplayString(div)).toBe(`"[object HTMLDivElement]"`) diff --git a/packages/shared/src/toDisplayString.ts b/packages/shared/src/toDisplayString.ts index a8ee3bbb54..bcfe1a9072 100644 --- a/packages/shared/src/toDisplayString.ts +++ b/packages/shared/src/toDisplayString.ts @@ -12,8 +12,11 @@ export const toDisplayString = (val: unknown): string => { : String(val) } -const replacer = (_key: string, val: any) => { - if (isMap(val)) { +const replacer = (_key: string, val: any): any => { + // can't use isRef here since @vue/shared has no deps + if (val && val.__v_isRef) { + return replacer(_key, val.value) + } else if (isMap(val)) { return { [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => { ;(entries as any)[`${key} =>`] = val