import React, { useState, useEffect } from 'react'; interface AutocompleteInputProps { value: string; onChange: (e: React.ChangeEvent) => void; name: string; placeholder?: string; // CAMBIO: La función ahora recibe el término de búsqueda fetchSuggestions: (query: string) => Promise; className?: string; } const AutocompleteInput: React.FC = ({ value, onChange, name, placeholder, fetchSuggestions, className }) => { const [suggestions, setSuggestions] = useState([]); const dataListId = `suggestions-for-${name}`; // CAMBIO: Lógica de "debouncing" para buscar mientras se escribe useEffect(() => { // No buscar si el input está vacío o es muy corto if (value.length < 2) { setSuggestions([]); return; } // Configura un temporizador para esperar 300ms después de la última pulsación const handler = setTimeout(() => { fetchSuggestions(value) .then(setSuggestions) .catch(err => console.error(`Error fetching suggestions for ${name}:`, err)); }, 300); // Limpia el temporizador si el usuario sigue escribiendo return () => { clearTimeout(handler); }; }, [value, fetchSuggestions, name]); return ( <> {suggestions.map((suggestion, index) => ( ); }; export default AutocompleteInput;