We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
做项目遇到一个需求,要求所有的 input 框提交前自动去除首尾空格,全部都是空格就全部去除。
input
最简单的办法是在提交前对数据作处理,但是这样会带来很多的重复性工作,所以需要把这层逻辑抽取出来。
在之前用 Vue 开发的时候,官方提供了一个很方便方法,使用的 trim 装饰符:
Vue
trim
<input v-model.trim="bindValue" />
然而目前用的是 React 开发,而 React 并没有原生提供类似功能,使用的 Antd 也没有提供,需要我们自己封装。
React
Antd
如果都是 Input 组件,我们直接封装一层,加上去除首尾空格的逻辑即可。
去除的最佳时机应该是输入框失去光标的时候,所以应该监听 blur 事件。
blur
具体代码如下:
// TrimInput Component import React from 'react'; import { Input } from 'antd'; export default class TrimInput extends React.Component { handleBlur = (e) => { // 去除头尾空格 e.target.value = e.target.value.trim(); const { onChange } = this.props; // 主动调 onChange,将数据同步给 Form onChange(e); } render () { return (<Input onBlur={this.handleBlur} {...this.props} />) } }
有时候并不一定都是 Input,也有可能是 Textarea, 这就要求我们把代码写得灵活一点,我们可以采用 React 特有的高阶组件扩展我们的逻辑。
Input
Textarea
具体代码:
// withTrim import React, { Component } from 'react'; const withTrim = (WrappedComponent) => class WrapperComponent extends Component { // 去除头尾空格 handleBlur = (e) => { e.target.value = e.target.value.trim(); const { onChange } = this.props; onChange(e); } render() { return <WrappedComponent onBlur={this.handleBlur} {...this.props} />; } } export default withTrim;
使用:
const TextArea = withTrim(AntdInput.TextArea);
The text was updated successfully, but these errors were encountered:
No branches or pull requests
做项目遇到一个需求,要求所有的
input
框提交前自动去除首尾空格,全部都是空格就全部去除。最简单的办法是在提交前对数据作处理,但是这样会带来很多的重复性工作,所以需要把这层逻辑抽取出来。
Vue 的做法
在之前用
Vue
开发的时候,官方提供了一个很方便方法,使用的trim
装饰符:React 上使用
然而目前用的是
React
开发,而 React 并没有原生提供类似功能,使用的Antd
也没有提供,需要我们自己封装。一般组件
如果都是 Input 组件,我们直接封装一层,加上去除首尾空格的逻辑即可。
去除的最佳时机应该是输入框失去光标的时候,所以应该监听
blur
事件。具体代码如下:
高阶组件
有时候并不一定都是
Input
,也有可能是Textarea
, 这就要求我们把代码写得灵活一点,我们可以采用 React 特有的高阶组件扩展我们的逻辑。具体代码:
使用:
The text was updated successfully, but these errors were encountered: