이전포스팅에서 다뤘던 실습과 동일하다. 목록 내 필터링을 구현하기 위해서는 다음과 같은 두가지 접근이 있을 수 있다.
flightList
를 처음 단 한번 받아온 다음 flightList
의 렌더링 직전에 함수(filterByCondition
)로 필터링된 것이다.두 방식은 각각 아래 장단점이 있다
서버의 앤드포인트에다가 추가적인 파라미터(query parameter)를 덧붙여 위에서 말한 외부 필터링이 가능하다.
파라미터는 /flight?departure=ICN&destination=CJU
와 같이 사용할 수 있는데,
/flight?departure=${departure}&destination=${destination}
이렇게 파라미터값을 전달인자를 통하여 받을 수 있게끔 하여 필터링을 구현해보았다.
그리고 받아온 데이터는 response 형태 객체이므로 .json()메소드를 사용하여 promise 객체 형태로 바꿔주어 리턴해주었다.
producer의 리턴의 형태가 Promise라면,,,
consumer에서 그 값을 빼오려면 .then 이나 async/await로 빼와야 한다.
return new Promise((resolve) => {
setTimeout(() => {
resolve(filtered)
}, 500);
}) //promise 객체의 producer
useEffect(async() => {
setFlightList(await getFlight(condition))
}, [condition]); //promise 객체의 consumer. 갇혀있는 promise객체의 성공값을 끌어내준다.