From 41fba82b39ff8664c63c173f1265f56891338fd5 Mon Sep 17 00:00:00 2001 From: lijianan <574980606@qq.com> Date: Sun, 16 Jun 2024 15:44:18 +0800 Subject: [PATCH] refactor: code optimization (#49431) * refactor: refactor InputAddon code * fix: fix * fix: fix * Update components/_util/InputAddon.tsx Signed-off-by: afc163 * fix: fix lint --------- Signed-off-by: afc163 Co-authored-by: afc163 --- components/_util/InputAddon.tsx | 15 +++++++++++++++ components/input-number/index.tsx | 22 +++++----------------- components/input/Input.tsx | 18 +++++------------- 3 files changed, 25 insertions(+), 30 deletions(-) create mode 100644 components/_util/InputAddon.tsx diff --git a/components/_util/InputAddon.tsx b/components/_util/InputAddon.tsx new file mode 100644 index 0000000000..39b0447aff --- /dev/null +++ b/components/_util/InputAddon.tsx @@ -0,0 +1,15 @@ +import React from 'react'; + +import { NoFormStyle } from '../form/context'; +import { NoCompactStyle } from '../space/Compact'; + +const getInputAddon = (addon: React.ReactNode): React.ReactNode => + addon ? ( + + + {addon} + + + ) : null; + +export default getInputAddon; diff --git a/components/input-number/index.tsx b/components/input-number/index.tsx index ac2952f98c..685f1f980a 100644 --- a/components/input-number/index.tsx +++ b/components/input-number/index.tsx @@ -5,6 +5,7 @@ import classNames from 'classnames'; import type { InputNumberProps as RcInputNumberProps, ValueType } from 'rc-input-number'; import RcInputNumber from 'rc-input-number'; +import getInputAddon from '../_util/InputAddon'; import type { InputStatus } from '../_util/statusUtils'; import { getMergedStatus, getStatusClassNames } from '../_util/statusUtils'; import { devUseWarning } from '../_util/warning'; @@ -13,10 +14,10 @@ import DisabledContext from '../config-provider/DisabledContext'; import useCSSVarCls from '../config-provider/hooks/useCSSVarCls'; import useSize from '../config-provider/hooks/useSize'; import type { SizeType } from '../config-provider/SizeContext'; -import { FormItemInputContext, NoFormStyle } from '../form/context'; +import { FormItemInputContext } from '../form/context'; import type { Variant } from '../form/hooks/useVariants'; import useVariant from '../form/hooks/useVariants'; -import { NoCompactStyle, useCompactItemContext } from '../space/Compact'; +import { useCompactItemContext } from '../space/Compact'; import useStyle from './style'; export interface InputNumberProps @@ -124,19 +125,6 @@ const InputNumber = React.forwardRef((props, ); const wrapperClassName = `${prefixCls}-group`; - const getAddon = (addon: React.ReactNode): React.ReactNode => { - if (!addon) { - return null; - } - return ( - - - {addon} - - - ); - }; - const element = ( ((props, controls={controlsTemp} prefix={prefix} suffix={suffixNode} - addonBefore={getAddon(addonBefore)} - addonAfter={getAddon(addonAfter)} + addonBefore={getInputAddon(addonBefore)} + addonAfter={getInputAddon(addonAfter)} classNames={{ input: inputNumberClass, variant: classNames( diff --git a/components/input/Input.tsx b/components/input/Input.tsx index 694b8cf2f3..b196d02b73 100644 --- a/components/input/Input.tsx +++ b/components/input/Input.tsx @@ -5,6 +5,7 @@ import RcInput from 'rc-input'; import { composeRef } from 'rc-util/lib/ref'; import getAllowClear from '../_util/getAllowClear'; +import getInputAddon from '../_util/InputAddon'; import type { InputStatus } from '../_util/statusUtils'; import { getMergedStatus, getStatusClassNames } from '../_util/statusUtils'; import { devUseWarning } from '../_util/warning'; @@ -13,10 +14,10 @@ import DisabledContext from '../config-provider/DisabledContext'; import useCSSVarCls from '../config-provider/hooks/useCSSVarCls'; import useSize from '../config-provider/hooks/useSize'; import type { SizeType } from '../config-provider/SizeContext'; -import { FormItemInputContext, NoFormStyle } from '../form/context'; +import { FormItemInputContext } from '../form/context'; import type { Variant } from '../form/hooks/useVariants'; import useVariant from '../form/hooks/useVariants'; -import { NoCompactStyle, useCompactItemContext } from '../space/Compact'; +import { useCompactItemContext } from '../space/Compact'; import useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout'; import useStyle from './style'; import { hasPrefixSuffix } from './utils'; @@ -171,15 +172,6 @@ const Input = forwardRef((props, ref) => { ); - const getAddon = (addon: React.ReactNode): React.ReactNode => - addon && ( - - - {addon} - - - ); - const mergedAllowClear = getAllowClear(allowClear ?? input?.allowClear); const [variant, enableVariantCls] = useVariant(customVariant, bordered); @@ -206,8 +198,8 @@ const Input = forwardRef((props, ref) => { input?.className, )} onChange={handleChange} - addonBefore={getAddon(addonBefore)} - addonAfter={getAddon(addonAfter)} + addonBefore={getInputAddon(addonBefore)} + addonAfter={getInputAddon(addonAfter)} classNames={{ ...classes, ...input?.classNames,