Skip to content

Commit

Permalink
refactor: delete legacy function withConfigConsumer (#39798)
Browse files Browse the repository at this point in the history
* chore: delete legacy function withConfigConsumer

* fix

* fix
  • Loading branch information
li-jia-nan committed Dec 25, 2022
1 parent 7be364f commit fa6c9c1
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 62 deletions.
40 changes: 1 addition & 39 deletions components/config-provider/context.tsx
Expand Up @@ -81,42 +81,4 @@ export const ConfigContext = React.createContext<ConfigConsumerProps>({
iconPrefixCls: defaultIconPrefixCls,
});

export const ConfigConsumer = ConfigContext.Consumer;

// =========================== withConfigConsumer ===========================
interface BasicExportProps {
prefixCls?: string;
}

interface ConsumerConfig {
prefixCls: string;
}

interface ConstructorProps {
displayName?: string;
}

/** @deprecated Use hooks instead. This is a legacy function */
export function withConfigConsumer<ExportProps extends BasicExportProps>(config: ConsumerConfig) {
return function withConfigConsumerFunc<ComponentDef>(
Component: React.ComponentType<ExportProps>,
): React.FC<ExportProps> & ComponentDef {
// Wrap with ConfigConsumer. Since we need compatible with react 15, be careful when using ref methods
const SFC: React.FC<ExportProps> & ComponentDef = ((props) => {
const configProps = React.useContext<ConfigConsumerProps>(ConfigContext);
const { getPrefixCls } = configProps;
const { prefixCls: basicPrefixCls } = config;
const { prefixCls: customizePrefixCls } = props;
const prefixCls = getPrefixCls(basicPrefixCls, customizePrefixCls);
return <Component {...configProps} {...props} prefixCls={prefixCls} />;
}) as React.FC<ExportProps> & ComponentDef;

const cons: ConstructorProps = Component.constructor as ConstructorProps;
const name = (cons && cons.displayName) || Component.name || 'Component';

if (process.env.NODE_ENV !== 'production') {
SFC.displayName = `withConfigConsumer(${name})`;
}
return SFC;
};
}
export const { Consumer: ConfigConsumer } = ConfigContext;
39 changes: 21 additions & 18 deletions components/statistic/Statistic.tsx
@@ -1,18 +1,12 @@
import classNames from 'classnames';
import * as React from 'react';

import type { ConfigConsumerProps } from '../config-provider';
import { withConfigConsumer } from '../config-provider/context';
import { ConfigContext } from '../config-provider';
import Skeleton from '../skeleton';
import type Countdown from './Countdown';
import StatisticNumber from './Number';
import type { FormatConfig, valueType } from './utils';

import useStyle from './style';

type CompoundedComponent = {
Countdown: typeof Countdown;
};
import Countdown from './Countdown';

export interface StatisticProps extends FormatConfig {
prefixCls?: string;
Expand All @@ -29,9 +23,13 @@ export interface StatisticProps extends FormatConfig {
onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
}

const Statistic: React.FC<StatisticProps & ConfigConsumerProps> = (props) => {
type CompoundedComponent = {
Countdown: typeof Countdown;
};

const Statistic: React.FC<StatisticProps> & CompoundedComponent = (props) => {
const {
prefixCls,
prefixCls: customizePrefixCls,
className,
style,
valueStyle,
Expand All @@ -41,22 +39,28 @@ const Statistic: React.FC<StatisticProps & ConfigConsumerProps> = (props) => {
prefix,
suffix,
loading = false,
direction,
onMouseEnter,
onMouseLeave,
decimalSeparator = '.',
groupSeparator = ',',
} = props;
const valueNode = (

const { getPrefixCls, direction } = React.useContext<ConfigConsumerProps>(ConfigContext);

const prefixCls = getPrefixCls('statistic', customizePrefixCls);

const [wrapSSR, hashId] = useStyle(prefixCls);

const valueNode: React.ReactNode = (
<StatisticNumber
decimalSeparator={decimalSeparator}
groupSeparator={groupSeparator}
prefixCls={prefixCls}
{...props}
value={value}
/>
);
// Style
const [wrapSSR, hashId] = useStyle(String(prefixCls));

const cls = classNames(
prefixCls,
{
Expand All @@ -65,6 +69,7 @@ const Statistic: React.FC<StatisticProps & ConfigConsumerProps> = (props) => {
className,
hashId,
);

return wrapSSR(
<div className={cls} style={style} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>
{title && <div className={`${prefixCls}-title`}>{title}</div>}
Expand All @@ -79,8 +84,6 @@ const Statistic: React.FC<StatisticProps & ConfigConsumerProps> = (props) => {
);
};

const WrapperStatistic = withConfigConsumer<StatisticProps>({
prefixCls: 'statistic',
})<CompoundedComponent>(Statistic);
Statistic.Countdown = Countdown;

export default WrapperStatistic;
export default Statistic;
7 changes: 2 additions & 5 deletions components/statistic/index.tsx
@@ -1,8 +1,5 @@
import Countdown from './Countdown';
import Statistic, { type StatisticProps } from './Statistic';

Statistic.Countdown = Countdown;
import Statistic from './Statistic';
import type { StatisticProps } from './Statistic';

export type { StatisticProps };

export default Statistic;
File renamed without changes.

0 comments on commit fa6c9c1

Please sign in to comment.