Слияние кода завершено, страница обновится автоматически
import React, { useEffect,FunctionComponent, ReactNode } from 'react';
import { observer } from 'mobx-react-lite';
import isNil from 'lodash/isNil';
import noop from 'lodash/noop';
export type CountRendererProps = {
text: ReactNode;
count: number | undefined;
overflowCount: number | undefined;
}
export interface CountProps {
prefixCls?: string;
count?: number | (() => number | undefined);
overflowCount?: number;
renderer?: (props: CountRendererProps) => ReactNode;
asyncCount: Function;
}
function getCount(count: number | (() => number | undefined) | undefined): number | undefined {
if (typeof count === 'function') {
return count();
}
return count;
}
function defaultRenderer(props: CountRendererProps): ReactNode {
const { text } = props;
if (text) {
return text;
}
}
const Count: FunctionComponent<CountProps> = function Count(props) {
const { count, overflowCount, prefixCls, renderer = defaultRenderer, asyncCount = noop } = props;
const number = getCount(count);
useEffect(()=>{
if (count !== number){
asyncCount()
}
},[number])
const renderedText: ReactNode = renderer({
text: overflowCount && number && number > overflowCount ? `${overflowCount}+` : number,
count: number,
overflowCount,
});
if (!isNil(renderedText)) {
return (
<span className={`${prefixCls}-tab-count`}>
{renderedText}
</span>
);
}
return null;
};
Count.displayName = 'Count';
export default observer(Count);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )