티스토리 뷰
안녕하세요 강정호입니다
오늘은 인스타그램에 Feed를 보여주기 위해서 포스팅 객체를 조회하기 위한 밑작업을 진행하겠습니다.
Post 객체를 조회하기 위해서 이렇게 3개로 구성하였습니다.
index.js : Post를 조회하려는 요청이 들어올 경우 index.js로 요청이 가고, index.js는 PostContainer.js로 요청을 보낸다.
PostContainer.js : Post 객체를 가공하고, PropTypes를 검증하는 프로그램
PostPresenter.js : Post 객체를 View로서 조립하여 보여주는 프로그램
프로그램 흐름
1) Feed.js : useQuery(FEED_QUERY)로 user의 Post 내역을 모두 조회한다. 조회한 Post 데이터를 <Post />에 넣고 호출한다
2) /Post/index.js : 받은 요청을 PostContainer.js로 보낸다
3) /Post/PostContainer.js : Post 객체를 가공하는 작업
4) /Post/PostPresenter.js : Post 객체를 보여주는 View
Feed.js
export default () => {
const { data, loading } = useQuery(FEED_QUERY);
console.log(data);
return (
<Wrapper>
{ loading && <Loader /> }
{!loading &&
data &&
data.seeFeed &&
data.seeFeed.map(post => (
<Post
key={post.id}
id={post.id}
user={post.user}
files={post.files}
likeCount={post.likeCount}
isLiked={post.isLiked}
comments={post.comments}
createdAt={post.createdAt}
/>
)
)
}
</Wrapper>
)
};
/Post/index.js
import PostContainer from "./PostContainer";
export default PostContainer;
PostContainer.js
import React, { useState } from "react";
import PostPresenter from "./PostPresenter";
import PropTypes from "prop-types";
import useInput from "../../Hooks/useInput";
const PostContainer = ({id,
user,
files,
likeCount,
isLiked,
comments,
createdAt}) => {
return <PostPresenter />;
}
PostContainer.propTypes = {
id:PropTypes.string.isRequired,
user:PropTypes.PropTypes.shape({
id: PropTypes.string.isRequired,
avatar:PropTypes.string,
userName:PropTypes.string.isRequired
}).isRequired,
files:PropTypes.arrayOf(PropTypes.shape({
id:PropTypes.string.isRequired,
url:PropTypes.string.isRequired
})
).isRequired,
likeCount:PropTypes.number.isRequired,
isLiked:PropTypes.bool.isRequired,
comments:PropTypes.arrayOf(PropTypes.shape({
id:PropTypes.string.isRequired,
text:PropTypes.string.isRequired,
user:PropTypes.shape({
id:PropTypes.string.isRequired,
userName:PropTypes.string.isRequired
}).isRequired
})).isRequired,
createdAt:PropTypes.string.isRequired
};
export default PostContainer;
PostPresenter.js
아직 미완성 상태
'프로젝트' 카테고리의 다른 글
[인스타그램클론코딩] #7.3 Post Component part Three 슬라이더 기능 추가 (0) | 2020.12.14 |
---|---|
[인스타그램클론코딩] #7.2 Post Component part Two (0) | 2020.12.14 |
[인스타그램클론코딩] #6.2 Header Logic part Two (0) | 2020.12.09 |
[인스타그램클론코딩] #6.1 Header Logic part one (0) | 2020.12.09 |
[인스타그램클론코딩] #Authrization 흐름 정리 (0) | 2020.12.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 도커
- 폭포수
- 내년은 빡세게!!
- 부동산공부
- resize
- Spring boot
- github
- 월부닷컴
- 깃허브
- 개발자 회고
- front
- Inception
- 깃
- Use case
- 열반스쿨기초반
- 항해플러스후기
- 인셉션
- GIT
- 항해솔직후기
- 관계대수
- docker
- 재테크공부
- 파라메터
- pop_back
- push_back
- 2023년
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 항해플러스백엔드
- 유즈케이스
- 월급쟁이부자들
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함