在一个简单的搜索组件上尝试反应钩子。这个想法很简单:用户键入符号,每个键入的符号都会启动 api 查询。
为了实现这一点,我在下面的代码中有useState钩子useCallback:
const Search = () => {
const [query, setQuery] = useState("");
const sendRequest = useCallback(() => {
console.log('sendRequest ', query);
}, [query]);
return (
<div>
<input
type="text"
value={query}
placeholder="Search"
onChange={e => {
console.log('onChange ', e.target.value);
setQuery(e.target.value);
sendRequest();
}}
/>
</div>
}
结果是该sendRequest方法总是获得以前版本的query.
onChange q
sendRequest
onChange qu
sendRequest q
onChange que
sendRequest qu
这是为什么?我认为这不是挂钩的使用方式,但我无法从文档中弄清楚。