리액트는 비동기처리를 하기 때문에 페이지를 렌더링 할 때, 값을 모두 받아오기 전에 setState를 실행하기 때문에 undefinded가 뜬다.
api 설계시 검색 기능은 배제되어 있었으나 추가 진행 하면서 검색 api를 새로 만들게 되었다.
검색을 했을 시 리덕스 스토어의 search 값을 true로 바꾸고, 초기에 상품들을 불러오는 api가 불려올 때에는 search값을 false로 지정하였고, 그에 따라 리스트를 뿌리는
컴포넌트에서 분기를 두어 search 값에 따라 화면에 나타내는 값을 달리 하였다.
const product_list =
search === true
? useSelector((state) => state.product.searchProducts)
: useSelector((state) => state.product.products);
하지만 스크롤을 화면 아래까지 내렸을 때에 실행되는 함수에도 분기를 주었는데, 여기에서 search 값을
인식하지 못하는 상황이 발생했다.
const callNext = () => {
search === true?
dispatch(productActions.getSearchProductAPI(searchInput)) :
dispatch(productActions.getProductAPI());
};
이 문제의 원인은 대략적으로 스크롤의 이벤트와 관련되어 있다고 판단하였고, 무한스크롤 컴포넌트 내부에서 함수를 실행해 봤지만 결과는 같았다.