essayer de réagir des crochets sur un composant de recherche simple. L'idée est simple: types d'utilisateurs symboles, chaque symbole typé initie la requête API.
Pour atteindre que j'ai usestate code> et
USECALLBACK code> Crochets comme dans le code ci-dessous:
onChange q
sendRequest
onChange qu
sendRequest q
onChange que
sendRequest qu
3 Réponses :
SetState est asynchrone! Au moment où vous envoyez SendRequest, l'état local n'est pas mis à jour, car il est asynchrone et il a besoin d'un peu de temps pour être défini.
Vous devez soit donner la chaîne en tant que paramètre dans la fonction ou l'utilisation de la requête. . p>
échange d'usecallback avec useeffect et supprimer l'appel à Onchange devrait fonctionner. P>
const Search = () => { const [query, setQuery] = useState(""); useEffect(() => { console.log('sendRequest ', query); }, [query]); return ( <div> <input type="text" value={query} placeholder="Search" onChange={e => { setQuery(e.target.value); }} /> </div> }
Utilisez useEffect à la place Usecallback. UseEffect déclenche votre fonction de rappel lorsque la requête change. p>
useeffect (() => {console.log (requête)}, [Query]) code> p>
Est useEffect code> supposé être appelé à partir d'événements tels que
Onchange code>?
Hey Bro Vous pouvez essayer cette implémentation de ses travaux comme vous vous attendez à
const [query, setQuery] = useState(""); const sendRequest = e => { setQuery(e); console.log('sendRequest ', e); }; return ( <div> <input type="text" value={query} placeholder="Search" onChange={e => { console.log('onChange ', e.target.value); sendRequest(e.target.value); }} /> </div>)