mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-07 17:44:35 +08:00
perf: Improve Components render perfermance when it's not reponsive (#34122)
* perf: Improve List render perfermance when grid is undefined https://github.com/ant-design/ant-design/pull/34106/files#diff-9e016ea02fe7dd0ea42d8774d29d45e1a10b8dd108de9c89d50c828c74b993b8R146-R151 * chore: do not export useBreakpoint param Co-authored-by: zombiej <smith3816@gmail.com>
This commit is contained in:
parent
246f90f03e
commit
07dec4cb00
@ -102,7 +102,10 @@ const InternalAvatar: React.ForwardRefRenderFunction<unknown, AvatarProps> = (pr
|
|||||||
|
|
||||||
const size = customSize === 'default' ? groupSize : customSize;
|
const size = customSize === 'default' ? groupSize : customSize;
|
||||||
|
|
||||||
const screens = useBreakpoint();
|
const needResponsive = Object.keys(typeof size === 'object' ? size || {} : {}).some(key =>
|
||||||
|
['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].includes(key),
|
||||||
|
);
|
||||||
|
const screens = useBreakpoint(needResponsive);
|
||||||
const responsiveSizeStyle: React.CSSProperties = React.useMemo(() => {
|
const responsiveSizeStyle: React.CSSProperties = React.useMemo(() => {
|
||||||
if (typeof size !== 'object') {
|
if (typeof size !== 'object') {
|
||||||
return {};
|
return {};
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
import Row from './row';
|
import Row from './row';
|
||||||
import Col from './col';
|
import Col from './col';
|
||||||
import useBreakpoint from './hooks/useBreakpoint';
|
import useInternalBreakpoint from './hooks/useBreakpoint';
|
||||||
|
|
||||||
|
// Do not export params
|
||||||
|
function useBreakpoint() {
|
||||||
|
return useInternalBreakpoint();
|
||||||
|
}
|
||||||
|
|
||||||
export { RowProps } from './row';
|
export { RowProps } from './row';
|
||||||
|
|
||||||
|
@ -213,7 +213,10 @@ function List<T>({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const screens = useBreakpoint();
|
const needResponsive = Object.keys(grid || {}).some(key =>
|
||||||
|
['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].includes(key),
|
||||||
|
);
|
||||||
|
const screens = useBreakpoint(needResponsive);
|
||||||
const currentBreakpoint = React.useMemo(() => {
|
const currentBreakpoint = React.useMemo(() => {
|
||||||
for (let i = 0; i < responsiveArray.length; i += 1) {
|
for (let i = 0; i < responsiveArray.length; i += 1) {
|
||||||
const breakpoint: Breakpoint = responsiveArray[i];
|
const breakpoint: Breakpoint = responsiveArray[i];
|
||||||
|
@ -39,9 +39,10 @@ const Pagination: React.FC<PaginationProps> = ({
|
|||||||
size,
|
size,
|
||||||
locale: customLocale,
|
locale: customLocale,
|
||||||
selectComponentClass,
|
selectComponentClass,
|
||||||
|
responsive,
|
||||||
...restProps
|
...restProps
|
||||||
}) => {
|
}) => {
|
||||||
const { xs } = useBreakpoint();
|
const { xs } = useBreakpoint(responsive);
|
||||||
|
|
||||||
const { getPrefixCls, direction } = React.useContext(ConfigContext);
|
const { getPrefixCls, direction } = React.useContext(ConfigContext);
|
||||||
const prefixCls = getPrefixCls('pagination', customizePrefixCls);
|
const prefixCls = getPrefixCls('pagination', customizePrefixCls);
|
||||||
@ -91,7 +92,7 @@ const Pagination: React.FC<PaginationProps> = ({
|
|||||||
|
|
||||||
const renderPagination = (contextLocale: PaginationLocale) => {
|
const renderPagination = (contextLocale: PaginationLocale) => {
|
||||||
const locale = { ...contextLocale, ...customLocale };
|
const locale = { ...contextLocale, ...customLocale };
|
||||||
const isSmall = size === 'small' || !!(xs && !size && restProps.responsive);
|
const isSmall = size === 'small' || !!(xs && !size && responsive);
|
||||||
const selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);
|
const selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);
|
||||||
const extendedClassName = classNames(
|
const extendedClassName = classNames(
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import omit from 'rc-util/lib/omit';
|
|
||||||
import RcSteps from 'rc-steps';
|
import RcSteps from 'rc-steps';
|
||||||
import type { ProgressDotRender } from 'rc-steps/lib/Steps';
|
import type { ProgressDotRender } from 'rc-steps/lib/Steps';
|
||||||
import CheckOutlined from '@ant-design/icons/CheckOutlined';
|
import CheckOutlined from '@ant-design/icons/CheckOutlined';
|
||||||
@ -44,8 +43,8 @@ interface StepsType extends React.FC<StepsProps> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Steps: StepsType = props => {
|
const Steps: StepsType = props => {
|
||||||
const { percent, size, className, direction, responsive } = props;
|
const { percent, size, className, direction, responsive, ...restProps } = props;
|
||||||
const { xs } = useBreakpoint();
|
const { xs } = useBreakpoint(responsive);
|
||||||
const { getPrefixCls, direction: rtlDirection } = React.useContext(ConfigContext);
|
const { getPrefixCls, direction: rtlDirection } = React.useContext(ConfigContext);
|
||||||
|
|
||||||
const getDirection = React.useCallback(
|
const getDirection = React.useCallback(
|
||||||
@ -98,7 +97,8 @@ const Steps: StepsType = props => {
|
|||||||
return (
|
return (
|
||||||
<RcSteps
|
<RcSteps
|
||||||
icons={icons}
|
icons={icons}
|
||||||
{...omit(props, ['percent', 'responsive'])}
|
{...restProps}
|
||||||
|
size={size}
|
||||||
direction={getDirection()}
|
direction={getDirection()}
|
||||||
stepIcon={stepIconRender}
|
stepIcon={stepIconRender}
|
||||||
prefixCls={prefixCls}
|
prefixCls={prefixCls}
|
||||||
|
Loading…
Reference in New Issue
Block a user