diff --git a/packages/descriptions/__tests__/descriptions.spec.ts b/packages/descriptions/__tests__/descriptions.spec.ts
index 307377153f..6dccdaa780 100644
--- a/packages/descriptions/__tests__/descriptions.spec.ts
+++ b/packages/descriptions/__tests__/descriptions.spec.ts
@@ -95,4 +95,27 @@ describe('Descriptions.vue', () => {
expect(wrapper.findAll('td')[1].element.getAttribute('colSpan')).toEqual('2')
})
+
+ test('re-rendered when slots is updated', async () => {
+ const CHANGE_VALUE = 'company'
+ const wrapper = _mount(`
+
+
+ {{remark}}
+
+
+
+ `, () => {
+ return {
+ remarks: ['school', 'hospital'],
+ }
+ }, {
+ onClick () {
+ this.remarks[0] = CHANGE_VALUE
+ },
+ })
+ wrapper.find('button').trigger('click')
+ await nextTick()
+ expect(wrapper.find('el-tag').text()).toBe(CHANGE_VALUE)
+ })
})
diff --git a/packages/descriptions/src/index.vue b/packages/descriptions/src/index.vue
index f10ee07d80..c3e72266ea 100644
--- a/packages/descriptions/src/index.vue
+++ b/packages/descriptions/src/index.vue
@@ -12,7 +12,7 @@
-
+
@@ -96,7 +96,7 @@ export default defineComponent({
return node
}
- const rows = computed(() => {
+ const getRows = () => {
const children = flattedChildren(slots.default?.()).filter(node => node?.type?.name === 'ElDescriptionsItem')
const rows = []
let temp = []
@@ -123,11 +123,11 @@ export default defineComponent({
})
return rows
- })
+ }
return {
descriptionsSize,
- rows,
+ getRows,
}
},
})