inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] React로 NodeBird SNS 만들기

인피니트 스크롤링 적용하기

스크롤링 success 문제

344

kyung3098

작성한 질문수 7

0

안녕하세요 제로초님

인피니트 스크롤링 적용하는 부분에서 스크롤이 끝에 올 때마다 mainPosts가 10개씩 추가 되지 않고 한번에 50개(

draft.hasMorePost = draft.mainPosts.length < 50;

)가 추가 되는데 원래라면 스크롤을 끝까지 내릴 때마다 10개씩만 추가 되어야 하는 건가요?

댓글에서 SUCCESS는 한 번만 와야 된다고 하셨는데 저는 처음 한 번만 게시글이 10개 추가(success 한 번)되고 이후에는 게시글이 50개가 될 때까지 한꺼번에 success가 들어옵니다

콘솔에 inView를 찍어보니 처음 10개만 들어왔을 때는 true -> false로 값의 변화가 있는데 한번에 success 되는 부분에서의 inView의 값은 계속 true로 찍힙니다..

이런 경우에는 어떻게 해결해야 되나요..??

index.js

const Home = () => {
  const dispatch = useDispatch();
  const { me } = useSelector((state) => state.user);
  const { mainPosts, hasMorePost, loadPostsLoading } = useSelector((state) => state.post);
  const [ref, inView] = useInView();

  useEffect(
    () => {
      dispatch({
        type: LOAD_POSTS_REQUEST,
      });
    }, []);
  useEffect(
    () => {
      if (inView && hasMorePost && !loadPostsLoading) {
        const lastId = mainPosts[mainPosts.length - 1]?.id;
        dispatch({
          type: LOAD_POSTS_REQUEST,
          lastId,
        });
      }
    },
    [inView, hasMorePost, loadPostsLoading, mainPosts],
  );

  return (
    <AppLayout>
      {me && <PostForm />}
      {mainPosts.map((post) => <PostCard key={post.id} post={post} />)}
      <div ref={hasMorePost && !loadPostsLoading ? ref : undefined} style={{ height: 10, backgroundColor: 'red' }} />
    </AppLayout>
  );

 

react redux node.js express next.js

답변 1

0

제로초(조현영)

LOAD_POSTS_REQUEST 액션이 여러 번 호출되는 건가요??

0

kyung3098

넵!! 한번에

LOAD_POSTS_REQUEST

LOAD_POSTS_SUCCESS

LOAD_POSTS_REQUEST

LOAD_POSTS_SUCCESS

LOAD_POSTS_REQUEST

LOAD_POSTS_SUCCESS

이렇게 찍힙니다!!

0

제로초(조현영)

useEffect 안에서 첫줄에 console.log inView 찍어보세요

0

kyung3098

1.png액션이 여러 번 찍히는 부분은 세 번째 false 이후 true 부분 입니다

0

제로초(조현영)

아 이게 inView는 변한게 없는데 hasMorePost랑 loadPostLoading이 바뀌면서 일어나는 일이네요.

inView가 false에서 true로 바뀔 때만 불러오도록 수정해야할 것 같습니다. false에서 true로 바뀌는지는 useRef 활용해서 할 수 있습니다.

0

kyung3098

넵 알려주신 방법대로 해보겠습니다 감사합니다!!!

넥스트 버젼 질문

0

78

2

로그인시 401 Unauthorized 오류가 뜹니다

0

89

1

무한 스크롤 중 스크롤 튐 현상

0

175

1

특정 페이지 접근을 막고 싶을 때

0

103

2

createGlobalStyle의 위치와 영향범위

0

96

2

인라인 스타일 리렌더링 관련

0

91

2

vsc 에서 npm init 설치시 오류

0

146

2

nextjs 15버전 사용 가능할까요?

0

158

1

화면 새로고침 문의

0

121

1

RTK에서 draft, state 차이가 있나요?

0

153

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

349

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

373

1

sudo certbot --nginx 에러

0

1275

2

Minified React error 콘솔에러 (hydrate)

0

470

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

247

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

327

1

npm run build 에러

0

518

1

front 서버 npm run build 중에 발생한 에러들

0

382

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

338

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

288

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

239

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

201

1