처음 구현한 방법은 리스트 배열을 map과 filter를 사용해서 input value 값을 includes로 필터링하여 남는 리스트만 호출 하는 방식으로 했었는데, api의 파라미터를 이용하면 훨씬!!! 쉽게 할 수 있었다.
기존 코드
// 검색 값 변동 시 마다 검색
useEffect(() => {
const searchApi = async () => {
try {
const data = await apiList();
const searchedList = data.list
.filter(item => {
return item.category_name && item.category_name.includes(searchValue);
});
if(searchedList.length > 0){
setSearchList(searchedList)
}
} catch (error) {
console.error(`Error list:`, error);
}
}
searchApi()
}, [searchValue])
2. 새로운 방법
// api list 호출
const apiList = async () => {
const url = '/getList';
const param = {
sfield : 'category_name',
skeyword : searchValue
}
const response = await axios.get(url, {
params: param,
headers: {
'Authorization': `Bearer ${accessToken}`
}
});
return response.data;
};
// 검색 값 변동 시 마다 검색
useEffect(() => {
const searchApi = async () => {
try {
const data = await apiList();
const searchedList = data.list
if(searchedList.length > 0){
setList(searchedList)
}
} catch (error) {
console.error(`Error list:`, error);
}
}
searchApi()
}, [searchValue])
호출 함수에
const param = {
sfield : 'category_name',
skeyword : searchValue
}
파라미터를 추가하여 get으로 호출 시 category_name에 searchValue가 포함된 리스트만 호출 한다.
'Develope > REACT' 카테고리의 다른 글
리액트 - JWT를 이용한 로그인 구현 (0) | 2024.08.02 |
---|---|
리액트 - API 숫자 값에 ' , ' 추가 (0) | 2024.08.02 |
리액트 API 리스트를 이용한 배열 값 검색 기능 (0) | 2024.08.02 |
React - 로그인 페이지 구현을 위한 route 경로 설정 (0) | 2024.07.31 |
React Vite CORS Error 해결 (0) | 2024.07.08 |