【发布时间】:2022-06-29 22:04:44
【问题描述】:
我们有一个下拉列表,其中包含对后端的获取请求。 下拉列表包含某些可能的过滤器。 即:客户编号和类型。
当我在其中一个 DDL 中选择某些内容时,我想保留所选值,我认为它正在刷新整个页面。
所以我有两个获取请求,一个用于填充名为“ExportView”的主要内容区域 另一个用于获取过滤器值。
将过滤和获取主要内容部分的新数据的函数作为参数发送到搜索字段部分。
我尝试在 handlefilter 函数中设置 event.preventDefault()。也尝试使用 usecallback 钩子,但没有运气。
useEffect(() => {
setIsLoading(true);
fetch(process.env.REACT_APP_BASEURL + "exports?take=10&"+ filterExportType + filterClientNumber).then((response) => {
return response.json();
})
.then((data) => {
setIsLoading(false);
setLoadedExports(data);
});
}, [filterClientNumber, filterExportType]);
useEffect(() => {
fetch(process.env.REACT_APP_BASEURL + "exports/filterselection").then((response) =>
{
return response.json();
})
.then((data) => {
setLoadedFilters(data);
});
}, []);
const handleFilter = useCallback((event) => {
event.preventDefault();
if(event.target.name === "exportType")
{
if(event.target.value === "")
{
setFilterExportType();
}
else {
setFilterExportType("&exportTypeId=" + event.target.value);
}
}
if(event.target.name === "client")
{
if(event.target.value === "")
{
setFilterClientNumber("");
}
else {
setFilterClientNumber("&clientNumber=" + event.target.value);
}
}
},[]);
if(isLoading)
{
return (
<section>
<p>Loading...</p>
</section>
);
}
return(
<>
<SearchField handleFilter={handleFilter} selection={loadedFilters}/>
<ExportView data={loadedExports}/>
</>
)
【问题讨论】:
标签: reactjs react-hooks