【发布时间】:2022-11-29 22:44:25
【问题描述】:
我有一个搜索输入,它更新查询参数并在每个 onChange 事件上触发 react-router 加载程序中针对该特定路由的 API 调用。 我如何防止在每次击键时调用 API 并实现诸如去抖动效果之类的东西(当用户没有输入 1000 毫秒时,然后调用 API 或更新查询参数)。笔记:我知道有一个 debounce hook 和逻辑,但我很感兴趣是否可以只用 react-router 来实现。
我有更新查询参数逻辑的组件:
const [searchParams, setSearchParams] = useSearchParams();
const countryQuery = searchParams.get("country") || "";
const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {
event.preventDefault();
setSearchParams(
{ country: event.target.value }
);
};
装载机:
export const loader = async ({ request }: LoaderFunctionArgs) => {
const url = new URL(request.url);
const countryQuery = url.searchParams.get("country") || "";
const countries = getCountries(countryQuery);
return countries;
};
我想防止不必要的 API 调用。
【问题讨论】:
-
我在想,如果你可以将状态提升到父级或使用上下文来触发更新,你能分享一些更相关的代码吗
标签: reactjs typescript react-hooks react-router