Input 输入框

通过鼠标或键盘输入内容,是最基础的表单域的包装。

何时使用

  • 需要用户输入表单域内容时。
  • 提供组合型输入框,带搜索的输入框,还可以进行大小选择。

代码演示

基本使用

基本使用。

Input输入框 - 图1

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input, Row, Col } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <Row gutter={8}>
  6. <Col span={12}>
  7. <Input placeholder="Basic usage" maxLength={50} required label="Basic" copy />
  8. </Col>
  9. <Col span={12}>
  10. <Input defaultValue="123" placeholder="Basic usage" maxLength={20} required label="Basic" disabled />
  11. </Col>
  12. </Row>,
  13. document.getElementById('container'));

三种大小

我们为 <Input /> 输入框定义了三种尺寸(大、默认、小),高度分别为 40px32px24px

注意: 在表单里面,我们只使用大尺寸的输入框。

Input输入框 - 图2

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <div className="example-input">
  6. <div style={{ marginBottom: 10 }}>
  7. <Input
  8. size="large"
  9. placeholder="large size"
  10. label="Large"
  11. maxLength="20"
  12. />
  13. </div>
  14. <div style={{ marginBottom: 10 }}>
  15. <Input placeholder="default size" />
  16. </div>
  17. <Input size="small" placeholder="small size" label="small" />
  18. </div>,
  19. document.getElementById('container'),
  20. );

前置/后置标签

用于配置一些固定组合。

Input输入框 - 图3

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input, Select, Icon } from 'choerodon-ui';
  4. const Option = Select.Option;
  5. const selectBefore = (
  6. <Select defaultValue="Http://" style={{ width: 90 }}>
  7. <Option value="Http://">Http://</Option>
  8. <Option value="Https://">Https://</Option>
  9. </Select>
  10. );
  11. const selectAfter = (
  12. <Select defaultValue=".com" style={{ width: 80 }}>
  13. <Option value=".com">.com</Option>
  14. <Option value=".jp">.jp</Option>
  15. <Option value=".cn">.cn</Option>
  16. <Option value=".org">.org</Option>
  17. </Select>
  18. );
  19. ReactDOM.render(
  20. <div>
  21. <div style={{ marginBottom: 16 }}>
  22. <Input addonBefore="Http://" addonAfter=".com" defaultValue="mysite" maxLength={30} />
  23. </div>
  24. <div style={{ marginBottom: 16 }}>
  25. <Input addonBefore={selectBefore} addonAfter={selectAfter} defaultValue="mysite" />
  26. </div>
  27. <div style={{ marginBottom: 16 }}>
  28. <Input addonAfter={<Icon type="setting" />} label="mysite" />
  29. </div>
  30. </div>,
  31. document.getElementById('container'),

输入框组合

输入框的组合展现。

注意:使用 compact 模式时,不需要通过 Col 来控制宽度。

Input输入框 - 图4

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input, Col, Select, InputNumber, DatePicker, AutoComplete, Cascader } from 'choerodon-ui';
  4. const InputGroup = Input.Group;
  5. const Option = Select.Option;
  6. const options = [
  7. {
  8. value: 'zhejiang',
  9. label: 'Zhejiang',
  10. children: [
  11. {
  12. value: 'hangzhou',
  13. label: 'Hangzhou',
  14. children: [
  15. {
  16. value: 'xihu',
  17. label: 'West Lake',
  18. },
  19. ],
  20. },
  21. ],
  22. },
  23. {
  24. value: 'jiangsu',
  25. label: 'Jiangsu',
  26. children: [
  27. {
  28. value: 'nanjing',
  29. label: 'Nanjing',
  30. children: [
  31. {

搜索框

带有搜索按钮的输入框,2.5.0 时新增。

Input输入框 - 图5

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input } from 'choerodon-ui';
  4. const Search = Input.Search;
  5. ReactDOM.render(
  6. <div>
  7. <Search
  8. placeholder="input search text"
  9. onSearch={value => console.log(value)}
  10. style={{ width: 200 }}
  11. />
  12. <br />
  13. <br />
  14. <Search placeholder="input search text" onSearch={value => console.log(value)} enterButton />
  15. <br />
  16. <br />
  17. <Search placeholder="input search text" enterButton="Search" size="large" />
  18. </div>,
  19. document.getElementById('container'),
  20. );

文本域

用于多行输入。

Input输入框 - 图6

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input } from 'choerodon-ui';
  4. const { TextArea } = Input;
  5. ReactDOM.render(
  6. <TextArea rows={4} maxLength={20} label="textarea" placeholder="textarea usage" />,
  7. document.getElementById('container'),
  8. );

适应文本高度的文本域

autosize 属性适用于 textarea 节点,并且只有高度会自动变化。另外 autosize 可以设定为一个对象,指定最小行数和最大行数。

Input输入框 - 图7

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input } from 'choerodon-ui';
  4. const { TextArea } = Input;
  5. ReactDOM.render(
  6. <div>
  7. <TextArea placeholder="Autosize height based on content lines" autosize />
  8. <div style={{ margin: '24px 0' }} />
  9. <TextArea
  10. placeholder="Autosize height with minimum and maximum number of lines"
  11. autosize={{ minRows: 2, maxRows: 6 }}
  12. />
  13. </div>,
  14. document.getElementById('container'),
  15. );

输入时格式化展示

结合 Tooltip 组件,实现一个数值输入框,方便内容超长时的全量展现。

Input输入框 - 图8

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input, Tooltip } from 'choerodon-ui';
  4. function formatNumber(value) {
  5. value += '';
  6. const list = value.split('.');
  7. const prefix = list[0].charAt(0) === '-' ? '-' : '';
  8. let num = prefix ? list[0].slice(1) : list[0];
  9. let result = '';
  10. while (num.length > 3) {
  11. result = `,${num.slice(-3)}${result}`;
  12. num = num.slice(0, num.length - 3);
  13. }
  14. if (num) {
  15. result = num + result;
  16. }
  17. return `${prefix}${result}${list[1] ? `.${list[1]}` : ''}`;
  18. }
  19. class NumericInput extends React.Component {
  20. onChange = (e) => {
  21. const { value } = e.target;
  22. const reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/;
  23. if ((!isNaN(value) && reg.test(value)) || value === '' || value === '-') {
  24. this.props.onChange(value);
  25. }
  26. }
  27. // '.' at the end or only '-' in the input box.
  28. onBlur = () => {
  29. const { value, onBlur, onChange } = this.props;

前缀和后缀

在输入框上添加前缀或后缀图标。

Input输入框 - 图9

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input, Icon } from 'choerodon-ui';
  4. class App extends React.Component {
  5. constructor(props) {
  6. super(props);
  7. this.state = {
  8. userName: 'xxx',
  9. };
  10. }
  11. emitEmpty = () => {
  12. this.userNameInput.focus();
  13. this.setState({ userName: '' });
  14. }
  15. onChangeUserName = (e) => {
  16. this.setState({ userName: e.target.value });
  17. }
  18. render() {
  19. const { userName } = this.state;
  20. const suffix = userName ? <Icon type="close" onClick={this.emitEmpty} /> : null;
  21. return (
  22. <Input
  23. placeholder="Enter your username"
  24. prefix="input-"
  25. suffix={suffix}

密码输入框

密码输入框

Input输入框 - 图10

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Input, Row, Col } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <Row gutter={8}>
  6. <Col span={8}>
  7. <Input placeholder="username" maxLength={50} required label="username" />
  8. </Col>
  9. <Col span={8}>
  10. <Input type="password" placeholder="password" maxLength={20} required label="password" />
  11. </Col>
  12. <Col span={8}>
  13. <Input type="password" showPasswordEye placeholder="password" maxLength={20} required label="password" />
  14. </Col>
  15. </Row>,
  16. document.getElementById('container'));

API

Input

参数说明类型默认值
addonAfter带标签的 input,设置后置标签string|ReactNode
addonBefore带标签的 input,设置前置标签string|ReactNode
defaultValue输入框默认内容string
disabled是否禁用状态,默认为 falsebooleanfalse
showPasswordEye是否显示type为password的俺就按住显示密码的眼睛,默认为 falsebooleanfalse
id输入框的 idstring
prefix带有前缀图标的 inputstring|ReactNode
size控件大小。注:标准表单内的输入框大小限制为 large。可选 large default smallstringdefault
suffix带有后缀图标的 inputstring|ReactNode
type声明 input 类型,同原生 input 标签的 type 属性,见:MDN(请直接使用 Input.TextArea 代替 type=”textarea”)。stringtext
value输入框内容string
onPressEnter按下回车的回调function(e)
copy显示复制按钮booleanfalse
onCopy点击复制按钮的回调function(copyValue)
underlineinput 下划线booleantrue

如果 InputForm.Item 内,并且 Form.Item 设置了 idoptions 属性,则 value defaultValueid 属性会被自动设置。

Input 的其他属性和 React 自带的 input 一致。

Input.TextArea

2.12 后新增的组件,旧版请使用 Input[type=textarea]

参数说明类型默认值
autosize自适应内容高度,可设置为 true|false 或对象:{ minRows: 2, maxRows: 6 }boolean|objectfalse
defaultValue输入框默认内容string
value输入框内容string
onPressEnter按下回车的回调function(e)

Input.TextArea 的其他属性和浏览器自带的 textarea 一致。

Input.Search

参数说明类型默认值
enterButton是否有确认按钮,可设为按钮文字boolean|ReactNodefalse
onSearch点击搜索或按下回车键时的回调function(value)

其余属性和 Input 一致。

Input.Group

参数说明类型默认值
compact是否用紧凑模式booleanfalse
sizeInput.Group 中所有的 Input 的大小,可选 large default smallstringdefault
  1. <Input.Group>
  2. <Input />
  3. <Input />
  4. </Input.Group>