From 6c4b72a63a083945558fb04625f07ec070f3df2a Mon Sep 17 00:00:00 2001 From: chenzhihui <18281682921@qqcom> Date: Mon, 26 Sep 2022 09:57:09 +0800 Subject: [PATCH] fix(runtime-core):add unit test #6697 --- .../__tests__/rendererTemplateRef.spec.ts | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts b/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts index 6a03e7a8eb5..079928a5a8b 100644 --- a/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts +++ b/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts @@ -493,4 +493,48 @@ describe('api: template refs', () => { await nextTick() expect(mapRefs()).toMatchObject(['2', '3', '4']) }) + + // #6697 v-for ref behaves differently under production and development + test('named ref in v-for , should be responsive when rendering', async () => { + const list = ref([1, 2, 3]) + const listRefs = ref([]) + const App = { + setup() { + return { listRefs } + }, + render() { + return h( + 'div', + null, + [ + h('div',null,String(listRefs.value)), + h( + 'ul', + list.value.map(i => + h( + 'li', + { + ref: 'listRefs', + ref_for: true + }, + i + ) + ) + ) + ] + ) + } + } + const root = nodeOps.createElement('div') + render(h(App), root) + + await nextTick() + expect(String(listRefs.value)).toBe('[object Object],[object Object],[object Object]') + expect(serializeInner(root)).toBe('
[object Object],[object Object],[object Object]
') + + list.value.splice(0,1); + await nextTick() + expect(String(listRefs.value)).toBe('[object Object],[object Object]') + expect(serializeInner(root)).toBe('
[object Object],[object Object]
') + }) })