К счастью, я сделал это несколько дней назад 😄: https://github.com/i-like-robots/react-tags/compare/v5.13.0...async-fetch-example
ура !, просто ищу это!
пример с аксиомами и хуками:
//initial api call
const [{ data: labelsData }, doGetLabels] = useAxios({
url: '/labels',
})
const [suggestions, setSuggestions] = useState([])
const [busy, setBusy] = useState(false)
const handleInputChange = debounce((name) => {
if (!busy) {
setBusy(true)
doGetLabels({ params: { name } })
}
})
//getResponseData is my custom parser for the BE response
useEffect(() => {
const labels = labelsData ? getResponseData(labelsData).labels : []
if (setBusy) {
setBusy(false)
}
setSuggestions(labels)
}, [labelsData])
Остальная часть кода остается такой же, как PR @ i-like-robots.
Спасибо за пример, похоже, есть небольшая проблема @ i-like-robots.
Список параметров обновляется сразу после пользовательского обработчика onInput
https://github.com/i-like-robots/react-tags/blob/6.0/lib/ReactTags.js#L130.
Однако когда я запрашиваю сервер внутри обработчика onInput
это занимает некоторое время.
В результате список опций всегда содержит список предложений из предыдущего звонка, а не из последнего.
Самый полезный комментарий
К счастью, я сделал это несколько дней назад 😄: https://github.com/i-like-robots/react-tags/compare/v5.13.0...async-fetch-example