NumberPicker 数字输入框

如果项目中使用的是 1.x 版本的基础组件(@alifd/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/base@latest -S

开发指南

何时使用

数字选择器,并对输入的数据做正确性检查、自动订正。

注意事项

  • 自动订正可能会导致onChange返回值和你输入的数据不一样。

  • 其中有些中间输入状态无法触发onChange,主要考虑到自动订正可能永远无法到达想要的值了。例如:

    • 0=>0.=>0.0=>0.01 中间两步不会触发onChange,因为如果订正会一直停留在0导致永远无法到达想要的值

    • min=10 的情况下, 输入 1=>12 第一步 1 不会触发onChange也不会订正数据,因为数字是一个一个输入的

  • 如果输入时没触发onChange,会在onBlur检测数据正确性并触发onChange

API

数字输入框

参数说明类型默认值
prefix样式前缀String'next-'
type设置类型可选值:'normal'(普通)'inline'(内联)Enum'normal'
value当前值Number-
defaultValue默认值Number0
step步长Number/String1
editable用户是否可以输入Booleantrue
inputWidth输入框的宽度Number/String-
onChange数值被改变的事件签名:Function(value: Number, e: Event) => void参数:value: {Number} 数据e: {Event} DOM事件对象Functionfunction noop() { }
onKeyDown键盘按下签名:Function() => voidFunctionfunction noop() { }
onFocus焦点获得签名:Function() => voidFunctionfunction noop() { }
onBlur焦点失去签名:Function() => voidFunctionfunction noop() { }
onDisabled按钮被禁用时候点击的回调签名:Function(e: Event) => void参数:e: {Event} DOM事件对象Functionfunction noop() { }
onCorrect数值订正后的回调签名:Function(obj: Object) => void参数:obj: {Object} {currentValue,oldValue:String}Functionfunction noop() { }
max最大值NumberInfinity
min最小值Number-Infinity
className自定义classString-
style自定义内联样式Object{}

代码示例

基本用法

如果是点击+ - 触发,可以通过 e.triggerType 获取onChange 第二个参数 e.type 可以获取事件类型。

NumberPicker 数字输入框 - 图1

查看源码在线预览

  1. import { NumberPicker } from "@icedesign/base";
  2. function onChange(value, e) {
  3. console.log(value, e.type, e.triggerType);
  4. }
  5. ReactDOM.render(
  6. <div>
  7. <NumberPicker onChange={onChange} />
  8. </div>,
  9. mountNode
  10. );

不可用

不可用的 number picker。

NumberPicker 数字输入框 - 图2

查看源码在线预览

  1. import { NumberPicker } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <NumberPicker disabled />
  5. <br />
  6. <br />
  7. <NumberPicker type="inline" disabled />
  8. </div>,
  9. mountNode
  10. );

不可直接输入

用户不可直接输入编辑数据

NumberPicker 数字输入框 - 图3

查看源码在线预览

  1. import { NumberPicker, Button } from "@icedesign/base";
  2. class App extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. editable: false,
  7. value: 0
  8. };
  9. }
  10. toogle() {
  11. this.setState({
  12. editable: !this.state.editable
  13. });
  14. }
  15. onChange(value) {
  16. console.log("changed", value);
  17. this.setState({
  18. value: value
  19. });
  20. }
  21. render() {
  22. return (
  23. <div>
  24. <NumberPicker
  25. onChange={this.onChange.bind(this)}
  26. value={this.state.value}
  27. editable={this.state.editable}
  28. />
  29. <br />
  30. <br />
  31. <Button onClick={this.toogle.bind(this)}>
  32. 切换到 {!this.state.editable ? "可编辑" : "不可编辑"}
  33. </Button>
  34. </div>
  35. );
  36. }
  37. }
  38. ReactDOM.render(<App />, mountNode);

inline 的 number picker

type 为 inline 的 number picker。

NumberPicker 数字输入框 - 图4

查看源码在线预览

  1. import { NumberPicker } from "@icedesign/base";
  2. function onChange(value) {
  3. console.log("changed", value);
  4. }
  5. ReactDOM.render(
  6. <div>
  7. <NumberPicker type="inline" onChange={onChange} />
  8. </div>,
  9. mountNode
  10. );

宽度自定义

inputWidth 控制input宽度

NumberPicker 数字输入框 - 图5

查看源码在线预览

  1. import { NumberPicker } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <NumberPicker inputWidth={"60px"} defaultValue={100000} />
  5. </div>,
  6. mountNode
  7. );

最大最小值

当数据自动订正会触发 onCorrectmin max 来限制value的最大最小值。

NumberPicker 数字输入框 - 图6

查看源码在线预览

  1. import { NumberPicker } from "@icedesign/base";
  2. function onChange(value, e) {
  3. console.log(value, e);
  4. }
  5. function onDisabled(e) {
  6. console.log(e);
  7. }
  8. function onCorrect(obj) {
  9. console.log(obj);
  10. }
  11. ReactDOM.render(
  12. <div>
  13. <NumberPicker
  14. type="inline"
  15. step={3}
  16. min={6}
  17. max={30}
  18. defaultValue={6}
  19. onChange={onChange}
  20. onDisabled={onDisabled}
  21. onCorrect={onCorrect}
  22. />
  23. </div>,
  24. mountNode
  25. );

步长

通过step控制每次加减步长

NumberPicker 数字输入框 - 图7

查看源码在线预览

  1. import { NumberPicker } from "@icedesign/base";
  2. function onChange(value) {
  3. console.log("changed", value);
  4. }
  5. function onCorrect(obj) {
  6. console.log(obj);
  7. }
  8. ReactDOM.render(
  9. <div>
  10. <NumberPicker onChange={onChange} onCorrect={onCorrect} step={0.01} />
  11. </div>,
  12. mountNode
  13. );

相关区块

NumberPicker 数字输入框 - 图8

暂无相关区块