此功能仍处于实验阶段。“Experimental”意味着这是早期实现,可能会发生剧烈且破坏性的更改。

NumberControl 是一个增强的 HTML input[type="number"] 元素。

用法

import { __experimentalNumberControl as NumberControl } from '@wordpress/components';

const Example = () => {
    const [ value, setValue ] = useState( 10 );

    return (
        <NumberControl
            isShiftStepEnabled={ true }
            onChange={ setValue }
            shiftStep={ 10 }
            value={ value }
        />
    );
};

属性

dragDirection

确定用于增加/减少值的拖拽轴。
方向:n | e | s | w

  • 类型:String
  • 是否必需:否
  • 默认值:n

dragThreshold

如果 isDragEnabled 为 true,则控制值发生变化前需要拖动的 px 数量。

  • 类型:Number
  • 是否必需:否
  • 默认值:10

spinControls

要显示的微调控件类型。这些是允许用户
快速增加和减少数字的按钮。

  • ‘none’ – 不显示微调控件。
  • ‘native’ – 使用浏览器的原生 HTML input 控件。
  • ‘custom’ – 使用加号和减号图标按钮。
    • 类型:String
    • 是否必需:否
    • 默认值:'native'

isDragEnabled

如果为 true,则启用鼠标拖拽手势来增加/减少数值。在拖拽时按住 SHIFT 键将使值增加 shiftStep。

  • 类型:Boolean
  • 是否必需:否

isShiftStepEnabled

如果为 true,按下 UP 或 DOWN 键并同时按住 SHIFT 键将使值增加 shiftStep 的值。

  • 类型:Boolean
  • 是否必需:否
  • 默认值:true

label

如果添加了此属性,将使用 label 属性的内容生成标签。

  • 类型:String
  • 是否必需:否

labelPosition

标签的位置(top、side、bottom 或 edge)。

  • 类型:String
  • 是否必需:否

max

允许的 value 最大值。

  • 类型:Number
  • 是否必需:否
  • 默认值:Infinity

min

允许的 value 最小值。

  • 类型:Number
  • 是否必需:否
  • 默认值:-Infinity

onChange

每当输入值发生变化时触发的回调函数。

该回调函数接收两个参数:

  1. newValue:输入的的新值
  2. extra:一个对象,其中在 event 键下包含原始浏览器事件。

请注意,作为回调函数第一个参数接收到的值不一定是有效值(例如,它可能超出 [min, max] 属性定义的范围,或者可能与 step 不匹配)。为了检查值的有效性,请检查回调函数第二个参数中的 event.target?.validity.valid 属性。

  • 类型:(newValue, extra) => void
  • 是否必需:否

required

如果为 true,则强制控件的最小/最大范围内的有效数字。如果为 false,则允许空字符串作为有效值。

  • 类型:Boolean
  • 是否必需:否
  • 默认值:false

shiftStep

按住 SHIFT 键时的增量。此移位值是 step 值的倍数。例如,如果 step 值为 5,且 shiftStep 为 10,则每次跳跃将增加/减少 50。

  • 类型:Number
  • 是否必需:否
  • 默认值:10

step

增加/减少时 value 的变化量。它也是验证的一个因素,因为 value 必须是 step 的倍数(如果指定了 min,则减去偏移量)才能被视为有效。接受特殊字符串值 any,该值会取消验证约束,并导致步进操作按 1 增加/减少。

  • 类型:Number | "any"
  • 是否必需:否
  • 默认值:1