我向服务器发出请求并获取我在视图表列表中显示的数据(类别列表)并实现一些功能
我有一个任务,我应该如何处理列表:
title name
按用户输入名称类别input
并按下按钮时进行过滤Search
按标题名称过滤我可以使用查询参数来实现,当用户在输入中写入一些类别并按下按钮提交时q
,我将其插入到文件apiCategory.js
中
Example: http://path/q=animals
。
在这种情况下,页面上只会显示类别动物。
但是当我编写实现按title name
列表过滤的代码时,就消失了。并且过滤不起作用。
在代码中修复什么?
也许我在方法中写错了,filter
或者updateSearchInput
?
主页.js:
const Home = () => {
const [value, setValue] = useState({
listCategory: [],
filteredlistCategory: [],
searchInput: ""
});
useEffect(() => {
async function fetchData( searchInput ) {
const res = await apiCategory('/pathApi', {
method: 'GET',
}, searchInput);
setValue(prev => ({
...prev,
listCategory: res.data,
}));
}
fetchData(value.searchInput);
}, [value.searchInput]);
const updateSearchInput = (e) => {
setValue((prev) => ({
searchInput: e.target.value
}));
};
const filter = () => {
setValue((prev) =>
({ searchInput, listCategory}) => ({
filteredlistCategory: listCategory.filter(item =>
item.firstName.toLowerCase().includes(searchInput.toLowerCase()))
}))
};
return (
<div>
<Search value={value.searchInput} onChange={updateSearchInput} onSearch={filter}/>
<Table dataAttribute={value.filteredlistCategory}/>
</div>
);
};
apiCategory.js:
export const apiCategory = async (url, args, valueFilter) => {
const response = await fetch(`${url}?q=${valueFilter}`, {
...args,
headers: {/....}
}});
return response.json();
}
搜索.js:
export default ({ value, onChange, onSearch }) => {
return (
<div className="search">
<input type="text" className="searchInput" onChange={onChange} value={value}/>
<button className="buttonSearch" onClick={() => onSearch(value)}>Search</button>
</div>
);
};
来自服务器的响应:
{"data":[
{"id":1,"title":"animals","created_at":"/...","updated_at":"/..."},
{"id":2,"title":"space","created_at":"/...","updated_at":"/..."},
{"id":3,"title":"sport","created_at":"/...","updated_at":"/..."}
]
}