Итак, я реализовал раскрывающийся список с возможностью поиска и множественным выбором из response-semantic-ui. (https://react.semantic-ui.com/modules/dropdown/ )
Обычно он работает в интерфейсе, поэтому вы можете вводить поисковые запросы в поле ввода, а результаты фильтруются в реальном времени.
Я хочу реализовать бэкэнд-поиск, который выполняется с помощью вызова axios с переменной searchQuery. Проблема в том, что каждый раз, когда нажимается клавиша, onSearchChange запускается для выполнения нового поиска, который повторно отображает раскрывающийся список, таким образом закрывая раскрывающийся список и очищая запрос.
Возвращенные данные представляют собой массив, который соответствует поиску с этой нажатой клавишей, но он не отображается в новых параметрах раскрывающегося списка, и при повторном открытии выпадающего списка поисковый запрос также очищается.
Я действительно не могу понять, как выполнить бэкэнд-поиск без изменения состояния, которое затем вызывает повторную визуализацию и очищает все. Есть предложения, как это сделать?
const ParentComponent = () => {
const [options, setOptions] = useState()
const [searchString, setSearchString] = useState('')
useEffect(() => {
const fetchOptions = async (searchString) => {
// getOptions is just an async axios.get, which returns an options array based on the search criteria
const response = await getOptions(searchString)
setOptions(response)
}
fetchOptions(searchString)
}, [searchString])
const handleSearchChange = (e, search) => {
setSearchString(() => search.searchQuery)
}
return(
<DropDown
onSearchChange={handleSearchChange}
searchQuery={searchString}
options={options}
/>
)}