Skip to content

Commit efdbd3c

Browse files
committed
fix: simplify dropdown fallback child handling
1 parent 2baf8c9 commit efdbd3c

1 file changed

Lines changed: 9 additions & 15 deletions

File tree

src/Dropdown.tsx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -134,29 +134,21 @@ const Dropdown = React.forwardRef<TriggerRef, DropdownProps>((props, ref) => {
134134
return `${prefixCls}-open`;
135135
};
136136

137-
const child = children as React.ReactNode;
138-
const validChild = React.isValidElement<{ className?: string }>(child);
139-
const elementChild = validChild ? child : null;
137+
const elementChild = children as React.ReactElement<
138+
React.HTMLAttributes<HTMLElement>
139+
>;
140140
const childClassName = clsx(
141-
elementChild?.props.className,
141+
elementChild.props?.className,
142142
mergedVisible && getOpenClassName(),
143143
);
144144
const triggerChildProps: React.HTMLAttributes<HTMLElement> &
145145
React.RefAttributes<HTMLElement> = {
146146
className: childClassName,
147-
ref: composeRef(childRef, elementChild && getNodeRef(elementChild)),
147+
ref: composeRef(childRef, getNodeRef(elementChild)),
148148
};
149-
const fallbackChild = elementChild
150-
? React.cloneElement(
151-
elementChild as React.ReactElement<React.HTMLAttributes<HTMLElement>>,
152-
{
153-
className: childClassName,
154-
},
155-
)
156-
: child;
157149

158150
const childrenNode =
159-
elementChild && supportRef(elementChild) ? (
151+
supportRef(elementChild) ? (
160152
React.cloneElement(
161153
elementChild as React.ReactElement<
162154
React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>
@@ -165,7 +157,9 @@ const Dropdown = React.forwardRef<TriggerRef, DropdownProps>((props, ref) => {
165157
)
166158
) : (
167159
<span className={childClassName} ref={childRef}>
168-
{fallbackChild}
160+
{React.cloneElement(elementChild, {
161+
className: childClassName,
162+
})}
169163
</span>
170164
);
171165

0 commit comments

Comments
 (0)