return(
<div>
<div></div>
<div></div>
</div>
)
return() 안엔 태그 하나만 들어갈 수 있습니다.
fragments라는 문법으로 <> </>로 묶어줘도 됨
function App (){
return (
<div>
HTML 잔뜩있는 곳
...
<div className="modal">
<h2>제목</h2>
<p>날짜</p>
<p>상세내용</p>
</div>
</div>
)
}
위처럼 지저분하게 널부러져있는 코드가 함수로 정리해놓으면 아래처럼 단 1줄로 축약된다.
function App (){
return (
<div>
HTML 잔뜩있는 곳
...
<Modal></Modal>
</div>
)
}
function Modal(){
return (
<div className="modal">
<h2>제목</h2>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}
이렇게 축약한 HTML 덩어리를 Component 라고 칭함
앞으로 HTML 깔끔하게 축약해서 쓰고싶으면 Component 이런 식으로 많이 만들어 쓰는게 좋음
Component 문법을 사용하면 <div>지옥보다는 깔끔하게 <Modal> 이렇게 되어있으니
<div>
로 묶거나왜냐면 function App(){} 이것도 다시보니 컴포넌트 생성문법이다.
보통 컴포넌트안에다가 컴포넌트를 만들진 않음
function Modal(){
return (
<div className="modal">
<h2>제목</h2>
<p>날짜</p>
<p>상세내용</p>
<다른컴포넌트></다른컴포넌트>
</div>
)
}
function 다른컴포넌트(){
return ( <div> 안녕 </div> )
}
– 사이트에 반복해서 출현하는 HTML 덩어리들은 Component로 만들면 좋음
– 내용이 매우 자주 변경될 것 같은 HTML 부분을 잘라서 Component로 만들면 좋습니다.
– 다른 페이지를 만들고 싶다면 그 페이지의 HTML 내용을 하나의 컴포넌트로 만드시는게 좋습니다. (그냥 좋을 뿐 필수는 아님)
– 또는 다른 팀원과 협업할 때 웹페이지를 컴포넌트 단위로 나눠서 작업을 분배하기도 합니다.
일단 HTML 깔끔하게 쓰려고 함수 자체를 많이 만들면 그것 만으로도 관리가 힘들다.
하지만 가장 큰 단점은 <Modal>
이라는 컴포넌트가 App(){} 안에 있는 state를 사용하고 싶을 때 그냥 바로 쓸 수 없다는 것.
그래서 사용 해야하는게 props
props라는 문법을 이용해 state를 <Modal>
까지 전해줘야 비로소 사용가능하다!
props에 대해선 다음에 Page에서 고고!
꼭 필요한 곳만 Component로 쪼개자.