<aside> 💡 세부 목표
배열을 이용하여 React에서 LIST를 렌더링 해보고 개별적인 컴포넌트로 만들어보기
</aside>
알아야 할 새로운 함수
new Date().getTime() // 현재 시간을 받아 milliseconds로 변환해주는 함
new Date(변환한시간).toLoacalString()// 인간이 보기 편한 일자로 바꿈
import './App.css';
import DiaryEditor from './DiaryEditor';
import DiaryList from './DiaryList';
const dummyList = [
{
id:1,
author:"박정수",
content:"하이 1",
emotion:5,
created_date: new Date().getTime()
},
{
id:2,
author:"홍길동",
content:"하이 2",
emotion:5,
created_date: new Date().getTime()
},
{
id:3,
author:"아무개",
content:"하이 3",
emotion:5,
created_date: new Date().getTime()
},
]
function App() {
return (
<div className="App">
<DiaryEditor/>
<DiaryList diaryList={dummyList}/>
</div>
);
}
export default App;
여기서 주의할 점은 고유한 key를 설정해야 하는데 이때는 id 또는 index번호를 넣는다(비추)
또 인자로 받은 List가 없는 에러를 대비하여 defaultProps도 설정!
const DiaryList = ({ diaryList }) => {
console.log(diaryList)
return (
<div className="DiaryList">
<h2>일기 리스트</h2>
<h4>{diaryList.length}개의 일기가 있습니다.</h4>
<div>
{diaryList.map((it, idx) => (
<div key={it.id}>
<div>작성자 : {it.author}</div>
<div>일기 : {it.content}</div>
<div>감정 : {it.emotion}</div>
<div>작성 시간(ms) : {it.created_date}</div>
<br/>
</div>
))}
</div>
</div>
);
};
DiaryList.defaultProps = {
diaryList: [],
}
export default DiaryList;
하지만 diarytList를 랜더링 할 녀석들을 저렇게 쓰는게 아니라 따로 파일로 만들어서 빼줘야함
DiaryList.js
import DiaryItem from "./DiaryItem";
const DiaryList = ({ diaryList }) => {
return (
<div className="DiaryList">
<h2>일기 리스트</h2>
<h4>{diaryList.length}개의 일기가 있습니다.</h4>
<div>
{diaryList.map((it, idx) => (
<DiaryItem key={it.id} {...it}/>
))}
</div>
</div>
);
};
DiaryList.defaultProps = {
diaryList: [],
}
export default DiaryList;
DiaryItem.js
이런식으로 DiaryList에 있는 item들을 따로 컴포넌트로 만들어줌