inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React

LoadMore : 게시글 일부만 불러오기, 더 불러오기

더보기 안없어짐

305

작성자 없음

1

안녕하세요. 드디어 마지막 강의까지 듣게 되었습니다. 근데 마지막 문제가 생겼습니다.ㅠㅠ 게시물을 끝까지 다 보고나서 더보기 버튼이 안사라지는데 코드를 비교해보면 변수명 제외하고는 일치하는 것 같은데 이유를 잘 모르겠습니다.. 다른 기능은 잘 작동해요!

 

import React, { useState, useEffect } from 'react'
import axios from 'axios'
import List from './Post/List'

function MainPage() {
    const [sort, setSort] = useState("최신순")
    const [postList, setPostList] = useState([])
    const [searchTerm, setSearchTerm] = useState("")
    const [skip, setSkip] = useState(0)
    const [loadMore, setLoadMore] = useState(true)

    const getLoadMore = ()=>{
        let body = {
            sort : sort,
            searchTerm : searchTerm,
            skip : skip
        }

        axios.post('/api/post/list', body)
        .then(res=>{
            if(res.data.success){
                setPostList([...postList, ...res.data.postList])
                setSkip(skip + res.data.postList.length)
                if (res.data.postList.lengh < 3){
                    setLoadMore(false)
                }
            }
        }).catch(err=>{
            console.log(err)
        })
    }
   
    const getPostList = ()=>{

        setSkip(0)

        let body = {
            sort : sort,
            searchTerm : searchTerm,
            skip : 0
        }

        axios.post('/api/post/list', body)
        .then(res=>{
                setPostList([...res.data.postList])
                setSkip(res.data.postList.length)
                if (res.data.postList.lengh < 3){
                    setLoadMore(false)
                }
                if (res.data.postList.length == 0) {
                    setLoadMore(false);
                  }
        }).catch(err=>{
            console.log(err)
        })
    }

    useEffect(()=>{
        getPostList()
    }, [sort])

    const Search = (e)=>{
        getPostList()
    }

  return (
    <div>
        <button onClick={()=>setSort("최신순")}>최신순</button>
        <button onClick={()=>setSort("인기순")}>인기순</button>
        <input type="text" value={searchTerm} onChange={e=>setSearchTerm(e.target.value)}/>
        <button onClick={(e)=>Search(e)}>검색</button>
        <List postList={postList}/>
        {loadMore && <button onClick={()=>getLoadMore()}>더 보기</button>}
    </div>
  )
}

export default MainPage

mongodb nodejs express firebase react

답변 1

0

판다코딩

더보기 버튼을 사라지게 만드는 state는 loadmore입니다.

현재 api 통신을 한 postList의 길이가 3보다 작으면, loadmore를 false로 바꿔주는데요.

서버쪽에서 한번에 post를 보내는 limit 같은 경우도 3으로 되어있을까요?

 

0

판다코딩

넵, 제가 생각해도 프론트단의 로직에 문제는 없는 것 같습니다.

useEffect를 통해 SKIP이 정상적으로 변경되는지 확인해보시겠어요?

0

판다코딩

useEffect의 dependency array에 skip을 부여하고 콘솔로 출력해보면 될 것 같습니다.

0

판다코딩

다시 생각해보니 게시글이 정확히 3개 남았을 때,

3개의 게시글을 불러오고 (= 모든 게시글이 다 불러옴)

더보기 버튼이 사라지지 않는 버그가 있을 수도 있을 것 같습니다.

조건을 같거나 작음으로 수정해주는 것도 좋겠네요.

Heroku 데이터로드 문제.

0

194

2

몽고DB

0

180

1

No routes matched location Error Component Stack error 질문입니다.

0

603

1

axios 문제 404에러

0

2130

1

도와주세요

0

468

3

네이버 클라우드를 사용하지 않는 사람은 외부저장소~env 까지 따라하지 않아도 되죠?

0

240

0

두번씩 실행되는 문제..

0

470

1

스타일 깃허브에서 코드 가져가라고 하셨는데요

0

479

2

read(2) 강의 내용에 질문이 있습니다.

0

269

1

깃허브

0

354

1

마지막에 "" 로 채워주는 이유가 있을까요?

0

294

1

React-router-dom을 설치하고 react app이 크롬에서 실행되지 않습니다.

0

387

1

Detail.js CSS 관련 강의가 없어진거 같은데요 ?

0

284

1

504 에러

0

864

1

콘솔에 DOM이라는 로그가 뜨는데

0

295

1

useEffect 두번 사용하는 것

0

931

1

작동은 잘되는데 오류가 뜹니다

0

446

1

react-router-dom 현재 최신버전

0

617

1

Test.js 소스코드 볼 수 있을까요?

0

495

2

닉네임 중복검사 시 404 에러

0

517

1

수정 버튼 눌렀을 때 이전 이미지 경로

0

442

1

이미지 수정이 안되고 이전 이미지 경로가 안떠요 ㅜㅜ

0

573

1

upload에서 제출 시 오류

0

628

2

여기 학습에 필요한 css 이거 어디에 있나요?

1

632

1