Afortunadamente, hice esto hace unos días 😄: https://github.com/i-like-robots/react-tags/compare/v5.13.0...async-fetch-example
¡yay !, ¡solo busco esto!
ejemplo con axios y 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])
El resto del código sigue siendo el mismo que el de @ i-like-robots PR
Gracias por el ejemplo, parece que hay un pequeño problema @ i-like-robots.
La lista de opciones se actualiza directamente después del controlador personalizado onInput
https://github.com/i-like-robots/react-tags/blob/6.0/lib/ReactTags.js#L130.
Sin embargo, cuando consulto el servidor dentro del controlador onInput
, lleva algo de tiempo.
Como resultado, la lista de opciones siempre contiene una lista de sugerencias de la llamada anterior, no la última.
Comentario más útil
Afortunadamente, hice esto hace unos días 😄: https://github.com/i-like-robots/react-tags/compare/v5.13.0...async-fetch-example