在工作中經(jīng)常會(huì)遇到頻繁請(qǐng)求接口但是接口返回速度不同導(dǎo)致先請(qǐng)求的后返回侄柔,搜索的結(jié)果就不是預(yù)期既们。比如說(shuō)搜索。
可以利用useEffect來(lái)解決這個(gè)問(wèn)題不铆。
useEffect(() => {
let didSearch = false;
if (text) {
dispatch
({
type: 'search/fundSearchApp',
payload: { input: text, pageSize: 20, isQueryPerformance: true }
}).then(res => {
if (!didSearch) {
setSearchList(res.searchList)
setCurrent(res.current)
setTotal(res.total)
}
});
} else {
setSearchList([]);
setCurrent(1);
setTotal(0);
}
return () => {
didSearch = true;
}
}, [text])
定義一個(gè)字段didSearch利用JS的閉包蝌焚,每次都是不同的變量,在下一次text變化完成誓斥,useEffect會(huì)再次執(zhí)行(渲染頁(yè)面再去調(diào)用return方法再去執(zhí)行useEffect)只洒,如果接口沒(méi)有返回重新渲染了標(biāo)識(shí)會(huì)改變使更新邏輯不再執(zhí)行。