去除前后空格withTrim的组件封装

在有些场景下,需要对一些input 、textarea一些输入框组件进行去除前后空格的校验,

通常情况下是直接在失焦的时候直接处理好,或者在一些保存数据的时候统一处理

vue的写法 v-model.trim
<Input v-model.trim="value14" placeholder="Enter something..." clearable style="width: 200px"></Input>
react hooks写法
ts
import React, { ChangeEvent, ChangeEventHandler, ComponentType, FocusEventHandler } from 'react';

export default function withTrim<
	Props extends {
		onChange?: ChangeEventHandler;
		onBlur?: FocusEventHandler;
	}
>(WrappedComponent: ComponentType<Props>) {
	return React.forwardRef<any, Props>(function (props: Props, ref) {
		// 去除头尾空格
		const handleBlur: FocusEventHandler<any> = (e) => {
			e.target.value = e.target.value.trim();
			props.onBlur && props.onBlur(e);
			props.onChange && props.onChange(e as ChangeEvent<any>);
		};

		return <WrappedComponent ref={ref} {...props} onBlur={handleBlur} />;
	});
}

js
import React from 'react';

/**
 * @param WrappedComponent 组件
 * @returns 对于一些文本框进行前后空格剔除
 */
export default function withTrim(WrappedComponent) {
	return React.forwardRef(function (props, ref) {
		// 去除头尾空格
		const handleBlur = (e) => {
			e.target.value = e.target.value.trim();
			props.onBlur && props.onBlur(e);
			props.onChange && props.onChange(e);
		};

		return <WrappedComponent ref={ref} {...props} onBlur={handleBlur} />;
	});
}

class
import React from 'react';
import
{
Input
}
from 'antd';
const withTrim =
(WrappedComponent)
=>

 class extends React.Component
{

 
 //
去除头尾空格

 
 handleBlur =
(e)
=>
{
 
 
 
 e.target.value = e.target.value.trim();

 
 
 const
{
onChange
}
= this.props;
 
 
 
 onChange(e);
 
 

}

 
 
 render()
{
 
 
 return <WrappedComponent onBlur={this.handleBlur}
{...this.props}
/>;
   

}
 }
const InputTrim = withTrim(Input);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值