ComboboxControl 是 SelectControl 的增强版本,增加了通过搜索输入框查找选项的功能。

设计指南

这些与SelectControl 的设计指南相同,但当项目过多无法一次性滚动浏览或加载时,此组件更适合根据用户输入进行过滤。

开发指南

用法

import { useState } from 'react';
import { ComboboxControl } from '@wordpress/components';

const options = [
    {
        value: 'small',
        label: 'Small',
    },
    {
        value: 'normal',
        label: 'Normal',
    },
    {
        value: 'large',
        label: 'Large',
    },
];

function MyComboboxControl() {
    const [ fontSize, setFontSize ] = useState();
    const [ filteredOptions, setFilteredOptions ] = useState( options );
    return (
        <ComboboxControl
            label="Font Size"
            value={ fontSize }
            onChange={ setFontSize }
            isLoading={ isLoading }
            options={ filteredOptions }
            onFilterValueChange={ ( inputValue ) =>
                setFilteredOptions(
                    options.filter( ( option ) =>
                        option.value === inputValue
                    )
                )
            }
        />
    );
}

属性

label

控件的标签。

  • 类型:String
  • 必填:是

hideLabelFromVision

如果为 true,则标签仅对屏幕阅读器可见。

  • 类型:Boolean
  • 必填:否

help

如果添加了此属性,将使用 help 属性的内容生成帮助文本。

  • 类型:String
  • 必填:否

options

可供选择的选项。

  • 类型:Array<{ value: string, label: string, disabled?: boolean }>
  • 必填:是

onFilterValueChange

当控件的搜索输入值更改时调用的函数。参数包含下一个输入值。

  • 类型:( value: string ) => void
  • 必填:否

onChange

当选中值更改时调用的函数。

  • 类型:( value: string | null ) => void
  • 必填:否

value

控件的当前值。

  • 类型:string | null
  • 必填:否

expandOnFocus

当控件获得焦点时自动展开下拉菜单。
如果单击控件,无论此属性如何,下拉菜单都会展开。

  • 类型:Boolean
  • 必填:否
  • 默认值:true

placeholder

如果传递了此属性,且没有值存在时,组合框输入将显示占位符字符串。

  • 类型:string
  • 必填:否

isLoading

在匹配建议(即 options 属性)的数据加载期间显示旋转图标(并隐藏建议下拉菜单)

  • 类型:Boolean
  • 必填:否

__experimentalRenderItem

为建议列表中的每个选项调用的自定义渲染器。渲染属性接收一个对象作为其参数,该对象在 item 键下包含单个选项的数据(直接来自传递给 options 属性的数据数组)。

  • 类型:( args: { item: object } ) => ReactNode
  • 必填:否

相关组件

  • 与此组件类似,但没有搜索输入的 CustomSelectControl 组件。

  • 要从一组选项中选择一个选项,并且希望同时显示所有可用选项时,请使用 RadioControl 组件。

  • 要从一组项目中选择一个或多个项目,请使用 CheckboxControl 组件。
  • 要切换单个设置的开/关状态,请使用 ToggleControl 组件。