결과물
다음과 같이 리스트를 렌더링하여 App.js 로 불러온다.
App.js
const dummyList = [
{
id: 1,
author: "이름",
content: "hellow?",
emotion: 5,
created_date: new Date().getTime(),
},
{
id: 2,
author: "이름2",
content: "hellow!",
emotion: 3,
created_date: new Date().getTime(),
},
{
id: 3,
author: "이름3",
content: "hellow+",
emotion: 4,
created_date: new Date().getTime(),
},
];
이렇게 만들어진 dummyList를 다른 컴포넌트에서 가공하여 App컴포넌트에 뿌려준다.
가공하기 위한 컴포넌트를 DiaryList라고 이름붙인다.
function App() {
return (
<div>
<DiaryEditor />
<DiaryList diaryList = {dummyList} />
</div>
);
};
export default App;
DiaryList에는 diaryList라는 이름으로 dummyList를 보내준다.
DiaryList
const DiaryList = ({ diaryList }) => {
return (
<div className="DiaryList">
<h2>일기 리스트</h2>
<h4>{diaryList.length}개의 일기가 있습니다.</h4>
<div>
{diaryList.map((it) => (
<DiaryItem key = {it.id} {...it} />
))}
</div>
</div>
)
}
DiaryList.defaultProps = {
diaryList: [],
};
// diaryList가 비었을때 default값을 정해주지 않으면 error가 발생한다.
export default DiaryList;
받아온 diaryList는 배열로서 받게된다.
DiaryItem
const DiaryItem = ({author, content, created_date, emotion, id }) => {
return (
<div className='DiaryItem'>
<div className='info'>
<span>
작성자 : {author} | 감정점수 : {emotion}
</span>
<br />
<span className='date'>{new Date(created_date).toLocaleString()}</span>
</div>
<div className='content'>{content}</div>
</div>
);
};
export default DiaryItem;
위와같이 데이터를 컴포넌트에 불러 가공한다음 가공한 데이터를 다시 상위 컴포넌트에 돌려준다.