import {useState} from 'react';import {useCombobox, useMultipleSelection} from 'downshift';const items = ['apple','apricot','pear','orange','grape','banana'];export default function App() { const [inputValue, setInputValue] = useState('');const {getSelectedItemProps, getDropdownProps, addSelectedItem, removeSelectedItem, selectedItems} = useMultipleSelection({initialSelectedItems: [items[0], items[1]]});const getFilteredItems = items => items.filter( item => selectedItems.indexOf(item)<0 && item.toLowerCase().startsWith(inputValue.toLowerCase())); const {isOpen, getToggleButtonProps, getLabelProps, getMenuProps, getInputProps, getComboboxProps, highlightedIndex, getItemProps, selectItem} = useCombobox({ inputValue, items: getFilteredItems(items), onStateChange: ({inputValue, type, selectedItem}) => { switch (type) { case useCombobox.stateChangeTypes.InputChange: setInputValue(inputValue) break; case useCombobox.stateChangeTypes.InputKeyDownEnter: case useCombobox.stateChangeTypes.ItemClick: case useCombobox.stateChangeTypes.InputBlur: if (selectedItem) { setInputValue(''); addSelectedItem(selectedItem); selectItem(null); } break; default: break; } }}); return (
{selectedItems.map((selectedItem, index) => ( {selectedItem} removeSelectedItem(selectedItem)}> ✕))}
);}