React
컴포넌트 내에서 AJAX 요청
Mia_
2022. 12. 5. 21:26
목록 내 필터링 구현의 2가지 방법
1. 컴포넌트 내에서 필터링 : 전체 목록 데이터를 불러오고, 목록을 검색어로 filter하는 방법
2. 컴포넌트 외부에서 필터링 : 컴포넌트 외부로 API 요청을 할 때, 필터링한 결과를 받아오는 방법(보통, 서버에 매번 검색어와 함께 요청하는 경우가 이에 해당)
두 방식의 차이점
분류 | 장점 | 단점 |
컴포넌트 내부에서 처리 | HTTP 요청의 빈도를 줄일 수 있다 | 브라우저(클라이언트)의 메모리 상에 많은 데이터를 갖게 되므로, 클라이언트의 부담이 늘어난다 |
컴포넌트 외부에서 처리 | 클라이언트 필터링 구현을 생각하지 않아도 된다 | 빈번한 HTTP 요청이 일어나게 되며, 서버의 필터링을 처리하므로 서버가 부담을 가진다 |
AJAX 요청이 느릴 경우
1. 기본적으로 Loading indicator의 구현은 상태 처리가 필요하다
const [isLoading, setLoading] = useState(true);
//생략, LoadingIndicator 컴포넌트는 별도로 구현 가정
return {isLoading ? <LoadingIndicator /> : <div>로딩 완료 화면</div>}
2. fetch 요청 전후로 setIsLoading을 설정해 주어 보다 나은 UX를 구현 할 수 있음
useEffect(() => {
setIsLoading(true);
fetch('http://서버주소/proverbs?q=${filter}')
.then(res => res.json())
.then(result => {
setProverbs(result);
setIsLoading(false);
})
},[filter]);