React中如何控制数据请求的优先级?
我在用React做搜索功能,用户频繁输入时会触发多次请求,旧的请求结果反而覆盖了新的,怎么让新请求优先、取消旧的?
试过用AbortController,但不确定是不是用对了,代码大概是这样:
useEffect(() => {
const controller = new AbortController();
fetch(<code>/search?q=${query}</code>, { signal: controller.signal })
.then(res => res.json())
.then(data => setResult(data));
return () => controller.abort();
}, [query]);
这样写,新请求来的时候,cleanup 函数先执行,把上一个请求掐断,只有最新的请求能走到 setResult。如果不想用 AbortController,搞个 local 变量做标志位也行,但 AbortController 更省带宽,推荐这个。