Felizmente, fiz isso há alguns dias 😄: https://github.com/i-like-robots/react-tags/compare/v5.13.0...async-fetch-example
yay !, só procurando por isso!
exemplo com axios e ganchos:
//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])
O resto do código permanece o mesmo do @ i-like-robots PR
Obrigado pelo exemplo, parece que há um pequeno problema @ i-like-robots.
A lista de opções é atualizada diretamente após o manipulador personalizado onInput
https://github.com/i-like-robots/react-tags/blob/6.0/lib/ReactTags.js#L130.
No entanto, quando eu consulto o servidor dentro de onInput
manipulador, leva algum tempo.
Como resultado, a lista de opções sempre contém a lista de sugestões da chamada anterior, não a mais recente.
Comentários muito úteis
Felizmente, fiz isso há alguns dias 😄: https://github.com/i-like-robots/react-tags/compare/v5.13.0...async-fetch-example