2016-07-25 17:46:45 +08:00
---
category: Components
2016-09-08 16:53:50 +08:00
title: AutoComplete
2024-03-22 14:22:42 +08:00
description: Autocomplete function of input field.
2022-11-30 20:14:41 +08:00
cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*g8THS4NpV6sAAAAAAAAAAAAADrJ8AQ/original
2023-02-09 22:17:31 +08:00
coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WERTQ6qvgEYAAAAAAAAAAAAADrJ8AQ/original
2022-11-09 12:28:04 +08:00
group:
title: Data Entry
order: 4
2022-11-17 18:28:13 +08:00
demo:
cols: 2
2016-07-25 17:46:45 +08:00
---
2016-09-10 13:43:30 +08:00
## When To Use
2016-07-25 17:46:45 +08:00
2021-07-19 16:21:09 +08:00
- When you need an input box instead of a selector.
- When you need input suggestions or helping text.
The differences with Select are:
- AutoComplete is an input box with text hints, and users can type freely. The keyword is aiding **input** .
- Select is selecting among given choices. The keyword is **select** .
2016-07-25 17:46:45 +08:00
2022-11-09 12:28:04 +08:00
## Examples
2022-11-17 17:31:26 +08:00
<!-- prettier - ignore -->
2022-11-09 12:28:04 +08:00
< code src = "./demo/basic.tsx" > Basic Usage< / code >
< code src = "./demo/options.tsx" > Customized< / code >
< code src = "./demo/custom.tsx" > Customize Input Component< / code >
< code src = "./demo/non-case-sensitive.tsx" > Non-case-sensitive AutoComplete< / code >
< code src = "./demo/certain-category.tsx" > Lookup-Patterns - Certain Category< / code >
< code src = "./demo/uncertain-category.tsx" > Lookup-Patterns - Uncertain Category< / code >
< code src = "./demo/status.tsx" > Status< / code >
2023-12-21 13:39:04 +08:00
< code src = "./demo/variant.tsx" version = "5.13.0" > Variants< / code >
2023-07-25 10:00:23 +08:00
< code src = "./demo/allowClear.tsx" > Customize clear button< / code >
2022-11-09 12:28:04 +08:00
< code src = "./demo/form-debug.tsx" debug > Debug in Form< / code >
< code src = "./demo/render-panel.tsx" debug > _InternalPanelDoNotUseOrYouWillBeFired< / code >
2016-07-25 17:46:45 +08:00
## API
2023-08-08 18:27:48 +08:00
Common props ref: [Common props](/docs/react/common-props)
2019-07-11 14:14:33 +08:00
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
2023-07-25 15:20:04 +08:00
| allowClear | Show clear button | boolean \| { clearIcon?: ReactNode } | false | 5.8.0: Support Object type |
2020-06-30 15:39:12 +08:00
| autoFocus | If get focus when component mounted | boolean | false | |
| backfill | If backfill selected item the input when using keyboard | boolean | false | |
| children (for customize input element) | Customize input element | HTMLInputElement \| HTMLTextAreaElement \| React.ReactElement< InputProps> | < Input /> | |
| children (for dataSource) | Data source to auto complete | React.ReactElement< OptionProps> \| Array< React.ReactElement< OptionProps>> | - | |
2019-07-11 14:14:33 +08:00
| defaultActiveFirstOption | Whether active first option by default | boolean | true | |
2020-10-21 10:33:43 +08:00
| defaultOpen | Initial open state of dropdown | boolean | - | |
2020-06-30 15:39:12 +08:00
| defaultValue | Initial selected option | string | - | |
2019-07-11 14:14:33 +08:00
| disabled | Whether disabled select | boolean | false | |
2024-08-09 21:21:43 +08:00
| dropdownRender | Customize dropdown content | (menus: ReactNode) => ReactNode | - | 4.24.0 |
2022-08-05 11:21:07 +08:00
| popupClassName | The className of dropdown menu | string | - | 4.23.0 |
2024-06-19 14:41:34 +08:00
| popupMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width. Default set `min-width` same as input. Will ignore when value less than select width. `false` will disable virtual scroll | boolean \| number | true | |
2020-08-03 15:01:16 +08:00
| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option` , if the function returns true, the option will be included in the filtered set; Otherwise, it will be excluded | boolean \| function(inputValue, option) | true | |
2024-08-09 21:21:43 +08:00
| getPopupContainer | Parent node of the dropdown. Default to body, if you encountered positioning problems during scroll, try changing to the scrollable area and position relative to it. [Example ](https://codesandbox.io/s/4j168r7jw0 ) | function(triggerNode) | () => document.body | |
2024-02-24 23:45:20 +08:00
| notFoundContent | Specify content to show when no result matches | ReactNode | - | |
2020-10-21 10:33:43 +08:00
| open | Controlled open state of dropdown | boolean | - | |
| options | Select options. Will get better perf than jsx definition | { label, value }\[] | - | |
2020-06-30 15:39:12 +08:00
| placeholder | The placeholder of input | string | - | |
2022-02-17 16:41:24 +08:00
| status | Set validation status | 'error' \| 'warning' | - | 4.19.0 |
2020-06-30 15:39:12 +08:00
| value | Selected option | string | - | |
2023-12-21 13:39:04 +08:00
| variant | Variants of input | `outlined` \| `borderless` \| `filled` | `outlined` | 5.13.0 |
2020-06-30 15:39:12 +08:00
| onBlur | Called when leaving the component | function() | - | |
2022-06-12 18:29:40 +08:00
| onChange | Called when selecting an option or changing an input value | function(value) | - | |
2020-10-21 10:33:43 +08:00
| onDropdownVisibleChange | Call when dropdown open | function(open) | - | |
2019-11-20 14:54:38 +08:00
| onFocus | Called when entering the component | function() | - | |
2020-06-30 15:39:12 +08:00
| onSearch | Called when searching items | function(value) | - | |
| onSelect | Called when a option is selected. param is option's value and option instance | function(value, option) | - | |
2022-03-04 10:26:42 +08:00
| onClear | Called when clear | function | - | 4.6.0 |
2017-12-01 19:28:41 +08:00
## Methods
2022-02-17 16:41:24 +08:00
| Name | Description | Version |
| ------- | ------------ | ------- |
| blur() | Remove focus | |
| focus() | Get focus | |
2019-08-23 12:18:27 +08:00
2023-04-11 10:25:24 +08:00
## Design Token
< ComponentTokenTable component = "Select" > < / ComponentTokenTable >
2019-08-23 12:18:27 +08:00
## FAQ
2019-11-22 09:22:20 +08:00
### Why doesn't the text composition system work well with onSearch in controlled mode?
2019-08-23 12:18:27 +08:00
2021-07-19 16:21:09 +08:00
Please use `onChange` to manage control state. `onSearch` is used for searching input which is not the same as `onChange` . Besides, clicking on the option will not trigger the `onSearch` event.
2019-08-23 12:18:27 +08:00
Related issue: [#18230 ](https://github.com/ant-design/ant-design/issues/18230 ) [#17916 ](https://github.com/ant-design/ant-design/issues/17916 )
2023-08-08 15:33:53 +08:00
### Why won't a controlled open AutoComplete display a drop-down menu when options are empty?
The AutoComplete component is essentially an extension of the Input form element. When the `options` property is empty, displaying empty text could mislead the user into believing the component is not operational, when in fact they are still able to input text. To avoid confusion, the `open` property will not display the drop-down menu when set to `true` and in combination with an empty `options` property. The `open` property must be used in conjunction with the `options` property.