Skip to content

Commit dcc74ee

Browse files
authored
chore: code optimization (#421)
1 parent 852caad commit dcc74ee

File tree

6 files changed

+65
-50
lines changed

6 files changed

+65
-50
lines changed

src/Dialog/Content/MemoChildren.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as React from 'react';
33
export type MemoChildrenProps = {
44
shouldUpdate: boolean;
55
children: React.ReactNode;
6-
}
6+
};
77

88
export default React.memo(
99
({ children }: MemoChildrenProps) => children as React.ReactElement,

src/Dialog/Content/Panel.tsx

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,26 @@ const Panel = React.forwardRef<ContentRef, PanelProps>((props, ref) => {
8181
contentStyle.height = height;
8282
}
8383
// ================================ Render ================================
84-
let footerNode: React.ReactNode;
85-
if (footer) {
86-
footerNode = <div className={classNames(`${prefixCls}-footer`, modalClassNames?.footer)} style={{...modalStyles?.footer}}>{footer}</div>;
87-
}
84+
const footerNode = footer ? (
85+
<div
86+
className={classNames(`${prefixCls}-footer`, modalClassNames?.footer)}
87+
style={{ ...modalStyles?.footer }}
88+
>
89+
{footer}
90+
</div>
91+
) : null;
8892

89-
let headerNode: React.ReactNode;
90-
if (title) {
91-
headerNode = (
92-
<div className={classNames(`${prefixCls}-header`, modalClassNames?.header)} style={{...modalStyles?.header}}>
93-
<div className={`${prefixCls}-title`} id={ariaId}>
94-
{title}
95-
</div>
93+
const headerNode = title ? (
94+
<div
95+
className={classNames(`${prefixCls}-header`, modalClassNames?.header)}
96+
style={{ ...modalStyles?.header }}
97+
>
98+
<div className={`${prefixCls}-title`} id={ariaId}>
99+
{title}
96100
</div>
97-
);
98-
}
101+
</div>
102+
) : null;
99103

100-
101104
const closableObj = useMemo(() => {
102105
if (typeof closable === 'object' && closable !== null) {
103106
return closable;
@@ -106,24 +109,34 @@ const Panel = React.forwardRef<ContentRef, PanelProps>((props, ref) => {
106109
return { closeIcon: closeIcon ?? <span className={`${prefixCls}-close-x`} /> };
107110
}
108111
return {};
109-
}, [closable, closeIcon]);
112+
}, [closable, closeIcon, prefixCls]);
110113

111114
const ariaProps = pickAttrs(closableObj, true);
112-
113-
let closer: React.ReactNode;
114-
if (closable) {
115-
closer = (
116-
<button type="button" onClick={onClose} aria-label="Close" {...ariaProps} className={`${prefixCls}-close`}>
117-
{closableObj.closeIcon}
118-
</button>
119-
);
120-
}
115+
116+
const closerNode = closable ? (
117+
<button
118+
type="button"
119+
onClick={onClose}
120+
aria-label="Close"
121+
{...ariaProps}
122+
className={`${prefixCls}-close`}
123+
>
124+
{closableObj.closeIcon}
125+
</button>
126+
) : null;
121127

122128
const content = (
123-
<div className={classNames(`${prefixCls}-content`, modalClassNames?.content)} style={modalStyles?.content}>
124-
{closer}
129+
<div
130+
className={classNames(`${prefixCls}-content`, modalClassNames?.content)}
131+
style={modalStyles?.content}
132+
>
133+
{closerNode}
125134
{headerNode}
126-
<div className={classNames(`${prefixCls}-body`, modalClassNames?.body)} style={{...bodyStyle, ...modalStyles?.body}} {...bodyProps}>
135+
<div
136+
className={classNames(`${prefixCls}-body`, modalClassNames?.body)}
137+
style={{ ...bodyStyle, ...modalStyles?.body }}
138+
{...bodyProps}
139+
>
127140
{children}
128141
</div>
129142
{footerNode}
@@ -137,10 +150,7 @@ const Panel = React.forwardRef<ContentRef, PanelProps>((props, ref) => {
137150
aria-labelledby={title ? ariaId : null}
138151
aria-modal="true"
139152
ref={mergedRef}
140-
style={{
141-
...style,
142-
...contentStyle,
143-
}}
153+
style={{ ...style, ...contentStyle }}
144154
className={classNames(prefixCls, className)}
145155
onMouseDown={onMouseDown}
146156
onMouseUp={onMouseUp}

src/Dialog/Mask.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ export type MaskProps = {
1111
className?: string;
1212
};
1313

14-
export default function Mask(props: MaskProps) {
14+
const Mask: React.FC<MaskProps> = (props) => {
1515
const { prefixCls, style, visible, maskProps, motionName, className } = props;
16-
1716
return (
1817
<CSSMotion
1918
key="mask"
@@ -31,4 +30,6 @@ export default function Mask(props: MaskProps) {
3130
)}
3231
</CSSMotion>
3332
);
34-
}
33+
};
34+
35+
export default Mask;

src/Dialog/index.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ import type { ContentRef } from './Content/Panel';
1212
import Mask from './Mask';
1313
import { warning } from 'rc-util/lib/warning';
1414

15-
export default function Dialog(props: IDialogPropTypes) {
15+
const Dialog: React.FC<IDialogPropTypes> = (props) => {
1616
const {
1717
prefixCls = 'rc-dialog',
1818
zIndex,
1919
visible = false,
2020
keyboard = true,
2121
focusTriggerAfterClose = true,
2222
// scrollLocker,
23-
2423
// Wrapper
2524
wrapStyle,
2625
wrapClassName,
@@ -47,12 +46,12 @@ export default function Dialog(props: IDialogPropTypes) {
4746
} = props;
4847

4948
if (process.env.NODE_ENV !== 'production') {
50-
["wrapStyle", "bodyStyle", "maskStyle"].forEach((prop) => {
49+
['wrapStyle', 'bodyStyle', 'maskStyle'].forEach((prop) => {
5150
// (prop in props) && console.error(`Warning: ${prop} is deprecated, please use styles instead.`)
52-
warning(!(prop in props), `${prop} is deprecated, please use styles instead.`)
51+
warning(!(prop in props), `${prop} is deprecated, please use styles instead.`);
5352
});
54-
if ("wrapClassName" in props) {
55-
warning(false, `wrapClassName is deprecated, please use classNames instead.`)
53+
if ('wrapClassName' in props) {
54+
warning(false, `wrapClassName is deprecated, please use classNames instead.`);
5655
}
5756
}
5857

@@ -167,6 +166,13 @@ export default function Dialog(props: IDialogPropTypes) {
167166
[],
168167
);
169168

169+
const mergedStyle: React.CSSProperties = {
170+
zIndex,
171+
...wrapStyle,
172+
...modalStyles?.wrapper,
173+
display: !animatedVisible ? 'none' : null,
174+
};
175+
170176
// ========================= Render =========================
171177
return (
172178
<div
@@ -177,11 +183,7 @@ export default function Dialog(props: IDialogPropTypes) {
177183
prefixCls={prefixCls}
178184
visible={mask && visible}
179185
motionName={getMotionName(prefixCls, maskTransitionName, maskAnimation)}
180-
style={{
181-
zIndex,
182-
...maskStyle,
183-
...modalStyles?.mask,
184-
}}
186+
style={{ zIndex, ...maskStyle, ...modalStyles?.mask }}
185187
maskProps={maskProps}
186188
className={modalClassNames?.mask}
187189
/>
@@ -191,7 +193,7 @@ export default function Dialog(props: IDialogPropTypes) {
191193
className={classNames(`${prefixCls}-wrap`, wrapClassName, modalClassNames?.wrapper)}
192194
ref={wrapperRef}
193195
onClick={onWrapperClick}
194-
style={{ zIndex, ...wrapStyle, ...modalStyles?.wrapper, display: !animatedVisible ? 'none' : null }}
196+
style={mergedStyle}
195197
{...wrapProps}
196198
>
197199
<Content
@@ -210,4 +212,6 @@ export default function Dialog(props: IDialogPropTypes) {
210212
</div>
211213
</div>
212214
);
213-
}
215+
};
216+
217+
export default Dialog;

src/DialogWrap.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type { IDialogPropTypes } from './IDialogPropTypes';
1313
* So here should add a child (div element) to custom container.
1414
* */
1515

16-
const DialogWrap: React.FC<IDialogPropTypes> = (props: IDialogPropTypes) => {
16+
const DialogWrap: React.FC<IDialogPropTypes> = (props) => {
1717
const {
1818
visible,
1919
getContainer,

src/IDialogPropTypes.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export type IDialogPropTypes = {
2424
keyboard?: boolean;
2525
style?: CSSProperties;
2626
mask?: boolean;
27-
children?: any;
27+
children?: React.ReactNode;
2828
afterClose?: () => any;
2929
afterOpenChange?: (open: boolean) => void;
3030
onClose?: (e: SyntheticEvent) => any;

0 commit comments

Comments
 (0)