自動完成
自動完成元件是一個文字輸入框,透過建議選項面板來增強功能。
useAutocomplete API
Import
import { useAutocomplete } from '@mui/base/useAutocomplete';
// or
import { useAutocomplete } from '@mui/base';
請閱讀這份關於最小化套件大小的指南,以了解差異。
名稱 | 類型 | 預設值 | 描述 |
---|---|---|---|
options* | ReadonlyArray<Value> | - | 選項陣列。 |
autoComplete | boolean | false | 若為 |
autoHighlight | boolean | false | 若為 |
autoSelect | boolean | false | 若為 |
blurOnSelect | 'touch' | 'mouse' | true | false | false | 控制在選取選項時是否應模糊輸入框
|
clearOnBlur | boolean | !props.freeSolo | 若為 |
clearOnEscape | boolean | false | 若為 |
componentName | string | - | 正在使用此 hook 的元件名稱。用於警告。 |
defaultValue | AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo> | props.multiple ? [] : null | 預設值。當元件不受控制時使用。 |
disableClearable | DisableClearable | false | 若為 |
disableCloseOnSelect | boolean | false | 若為 |
disabled | boolean | false | 若為 |
disabledItemsFocusable | boolean | false | 若為 |
disableListWrap | boolean | false | 若為 |
filterOptions | (options: Value[], state: FilterOptionsState<Value>) => Value[] | createFilterOptions() | 一個函式,用於決定要在搜尋時呈現的篩選選項。 |
filterSelectedOptions | boolean | false | 若為 |
freeSolo | FreeSolo | false | 若為 |
getOptionDisabled | (option: Value) => boolean | - | 用於決定給定選項的停用狀態。 |
getOptionKey | (option: Value | AutocompleteFreeSoloValueMapping<FreeSolo>) => string | number | - | 用於決定給定選項的索引鍵。當選項的標籤不唯一時,這會很有用(因為預設情況下標籤會用作索引鍵)。 |
getOptionLabel | (option: Value | AutocompleteFreeSoloValueMapping<FreeSolo>) => string | (option) => option.label ?? option | 用於決定給定選項的字串值。它用於填寫輸入框(以及在未提供 |
groupBy | (option: Value) => string | - | 如果提供,選項將會分組在傳回的字串下。當未提供 |
handleHomeEndKeys | boolean | !props.freeSolo | 若為 |
id | string | - | 此 prop 用於協助實作無障礙邏輯。如果您未提供 id,它將會回復為隨機產生的 id。 |
includeInputInList | boolean | false | 若為 |
inputValue | string | - | 輸入值。 |
isOptionEqualToValue | (option: Value, value: Value) => boolean | - | 用於決定選項是否代表給定的值。預設使用嚴格相等。⚠️ 需要處理兩個引數,一個選項只能與一個值相符。 |
multiple | Multiple | false | 若為 |
onChange | (event: React.SyntheticEvent, value: AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo>, reason: AutocompleteChangeReason, details?: AutocompleteChangeDetails<Value>) => void | - | 當值變更時觸發的回呼。 |
onClose | (event: React.SyntheticEvent, reason: AutocompleteCloseReason) => void | - | 當彈出視窗要求關閉時觸發的回呼。在受控模式中使用(請參閱 open)。 |
onHighlightChange | (event: React.SyntheticEvent, option: Value | null, reason: AutocompleteHighlightChangeReason) => void | - | 當醒目提示選項變更時觸發的回呼。 |
onInputChange | (event: React.SyntheticEvent, value: string, reason: AutocompleteInputChangeReason) => void | - | 當輸入值變更時觸發的回呼。 |
onOpen | (event: React.SyntheticEvent) => void | - | 當彈出視窗要求開啟時觸發的回呼。在受控模式中使用(請參閱 open)。 |
open | boolean | - | 若為 |
openOnFocus | boolean | false | 若為 |
readOnly | boolean | false | 若為 |
selectOnFocus | boolean | !props.freeSolo | 若為 |
unstable_classNamePrefix | string | 'Mui' | |
unstable_isActiveElementInListbox | (listbox: React.RefObject<HTMLElement | null>) => boolean | - | |
value | AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo> | - | 自動完成的值。 |
名稱 | 類型 | 描述 |
---|---|---|
anchorEl | null | HTMLElement | 用於設定元件位置的 HTML 元素。 |
dirty | boolean | 若為 |
expanded | boolean | 若為 |
focused | boolean | 若為 |
focusedTag | number | 元件的焦點標籤索引。 |
getClearProps | () => React.HTMLAttributes<HTMLButtonElement> |
|
getInputLabelProps | () => Omit<React.HTMLAttributes<HTMLLabelElement>, 'color'> | 輸入標籤元素 props 的解析器。 |
getInputProps | () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.Ref<HTMLInputElement> } | 輸入元素 props 的解析器。 |
getListboxProps | () => React.HTMLAttributes<HTMLUListElement> | 列表框元件 props 的解析器。 |
getOptionProps | (renderedOption: UseAutocompleteRenderedOption<Value>) => React.HTMLAttributes<HTMLLIElement> & { key: any } | 呈現的選項元素 props 的解析器。 |
getPopupIndicatorProps | () => React.HTMLAttributes<HTMLButtonElement> | 彈出視窗圖示 props 的解析器。 |
getRootProps | (externalProps?: any) => React.HTMLAttributes<HTMLDivElement> | 根插槽 props 的解析器。 |
getTagProps | AutocompleteGetTagProps | 標籤 props getter。 |
groupedOptions | Value[] | Array<AutocompleteGroupedOption<Value>> | 要呈現的選項。如果提供了 groupBy prop,則為 |
id | string | Autocomplete 的 ID。 |
inputValue | string | 輸入值。 |
popupOpen | boolean | 若為 |
setAnchorEl | () => void | 元件 |
value | AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo> | 自動完成的值。 |