From 62e3c4b73afb6f02b6787159a9601feea8112c9e Mon Sep 17 00:00:00 2001 From: ly303550688 Date: Thu, 22 Aug 2019 13:51:47 +0800 Subject: [PATCH] fix: throw exception when has none collapse-panel in default slot (#1116) --- components/vc-collapse/src/Collapse.jsx | 70 +++++++++++++------------ 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/components/vc-collapse/src/Collapse.jsx b/components/vc-collapse/src/Collapse.jsx index 86c55728b..528619194 100644 --- a/components/vc-collapse/src/Collapse.jsx +++ b/components/vc-collapse/src/Collapse.jsx @@ -70,44 +70,46 @@ export default { const activeKey = this.stateActiveKey; const { prefixCls, accordion, destroyInactivePanel, expandIcon } = this.$props; const newChildren = []; - this.$slots.default.forEach((child, index) => { - if (isEmptyElement(child)) return; - const { header, headerClass, disabled } = getPropsData(child); - let isActive = false; - const key = child.key || String(index); - if (accordion) { - isActive = activeKey[0] === key; - } else { - isActive = activeKey.indexOf(key) > -1; - } + if (this.$slots.default) { + this.$slots.default.forEach((child, index) => { + if (isEmptyElement(child)) return; + const { header, headerClass, disabled } = getPropsData(child); + let isActive = false; + const key = child.key || String(index); + if (accordion) { + isActive = activeKey[0] === key; + } else { + isActive = activeKey.indexOf(key) > -1; + } - let panelEvents = {}; - if (!disabled && disabled !== '') { - panelEvents = { - itemClick: () => { - this.onClickItem(key); + let panelEvents = {}; + if (!disabled && disabled !== '') { + panelEvents = { + itemClick: () => { + this.onClickItem(key); + }, + }; + } + + const props = { + props: { + header, + headerClass, + isActive, + prefixCls, + destroyInactivePanel, + openAnimation: this.currentOpenAnimations, + accordion, + expandIcon, + }, + on: { + ...panelEvents, }, }; - } - - const props = { - props: { - header, - headerClass, - isActive, - prefixCls, - destroyInactivePanel, - openAnimation: this.currentOpenAnimations, - accordion, - expandIcon, - }, - on: { - ...panelEvents, - }, - }; - newChildren.push(cloneElement(child, props)); - }); + newChildren.push(cloneElement(child, props)); + }); + } return newChildren; }, setActiveKey(activeKey) {