From f994b974c0a1ac95d313c8ccfc258c6ba3910b6e Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 27 Jul 2021 18:34:15 -0400 Subject: [PATCH] feat: unwrap refs in toDisplayString --- packages/shared/__tests__/toDisplayString.spec.ts | 12 ++++++++++++ packages/shared/src/toDisplayString.ts | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/shared/__tests__/toDisplayString.spec.ts b/packages/shared/__tests__/toDisplayString.spec.ts index a998904b1ab..f9e20841e49 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 a8ee3bbb54e..bcfe1a90721 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