From e33161f076f8d75f111a282232f741d66d541f33 Mon Sep 17 00:00:00 2001 From: Navin Moorthy Date: Tue, 4 Jan 2022 12:28:22 +0530 Subject: [PATCH] =?UTF-8?q?fix(componentProps):=20=F0=9F=90=9B=20proper=20?= =?UTF-8?q?solution=20for=20all=20cases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checkbox-group/CheckboxGroupWrapper.tsx | 1 + src/tooltip/SliderTooltipReference.tsx | 1 + src/utils/react.ts | 16 ++++++++++------ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/checkbox-group/CheckboxGroupWrapper.tsx b/src/checkbox-group/CheckboxGroupWrapper.tsx index df41a81a..83e5ad90 100644 --- a/src/checkbox-group/CheckboxGroupWrapper.tsx +++ b/src/checkbox-group/CheckboxGroupWrapper.tsx @@ -43,6 +43,7 @@ export const useCheckboxGroupContextWrapper = createHook< export const CheckboxGroupWrapper = createComponent({ as: "div", + memo: true, useHook: useCheckboxGroupContextWrapper, useCreateElement: (type, props, children) => { useWarning( diff --git a/src/tooltip/SliderTooltipReference.tsx b/src/tooltip/SliderTooltipReference.tsx index 50b0d309..70c011c1 100644 --- a/src/tooltip/SliderTooltipReference.tsx +++ b/src/tooltip/SliderTooltipReference.tsx @@ -123,5 +123,6 @@ export const useSliderTooltipReference = createHook< export const SliderTooltipReference = createComponent({ as: "div", + memo: true, useHook: useSliderTooltipReference, }); diff --git a/src/utils/react.ts b/src/utils/react.ts index dc0691a5..a0f9ae3b 100644 --- a/src/utils/react.ts +++ b/src/utils/react.ts @@ -100,18 +100,22 @@ export const getComponentProps = ( if (validChildren.length > 0) { validChildren.forEach(function (child) { + // For only React Element // @ts-ignore - if (componentMaps[child.type.displayName]) { + if (componentMaps[child?.type]) { // @ts-ignore - componentProps[componentMaps[child.type.displayName]] = child.props; // @ts-ignore - } else if (componentMaps[child.type.type.displayName]) { + componentProps[componentMaps[child?.displayName]] = child.props; + // For Forwarded Ref with React Element // @ts-ignore - componentProps[componentMaps[child.type.type.displayName]] = // @ts-ignore + } else if (componentMaps[child?.type?.render?.displayName]) { + // @ts-ignore + componentProps[componentMaps[child?.type?.render?.displayName]] = child.props; + // For Memoised Forwarded Ref with React Element // @ts-ignore - } else if (componentMaps[child.type.type.render.displayName]) { + } else if (componentMaps[child?.type?.type?.render?.displayName]) { // @ts-ignore - componentProps[componentMaps[child.type.type.render.displayName]] = // @ts-ignore + componentProps[componentMaps[child?.type?.type?.render?.displayName]] = child.props; } else { finalChildren.push(child);