project/main

무한 스크롤 또 에러

lap_mu 2023. 3. 25. 23:50

에러

게시판 리스트를 보여주는 페이지에서 다른 페이지로 이동한 후 다시 게시판 리스트 페이지로 돌아왔을 경우 같은 데이터가 추가되는 에러 발생

 

원인

같은 데이터인지 아닌지 구별할때 데이터 하나만 가지고 구별했다. 그러다보니 순서가 바뀌어서 들어오게되면 같은 데이터라도 들어가게 되는게 원인이었다. 

if (
  state.listData.length !== 0 &&
  state.listData.filter((el) => el.boardId === data[0].boardId).length === 0 
) {
  state.listData = [...state.listData, ...result];
}

 

해결

데이터 하나만 가지고 비교하는 것이 아니라 전체를 비교해서 기존 데이터에 없는 데이터만 추가하게끔 로직을 변경했다.

 

const NotData = data.reduce((acc: BoardDataProps[], cur) => {
  let result: BoardDataProps[] = [...acc];
  if (
    state.listData.filter((el) => cur.boardId === el.boardId).length === 0
  ) {
    result.push(cur);
  }
  return result;
}, []);
if (
  state.listData.length !== 0 &&
  NotData.length !== 0
) {
  state.listData = [...state.listData, ...NotData];
}