return 안에는
return(
<div></div>
<div></div>
)
이렇게 평행한? 연속하는? 같은 위치의 div 태그를 만들 수 없다.
여러개를 만들어주고싶다면
return(
<div>
<div></div>
<div></div>
</div>
)
이렇게
하나의 큰 div에 감싸주는거 같은 방식을 사용해야 한다.
HTML요소 많은걸 묶어서 한 단어로 쓸 수있는 리액트 문법:
function으로 원하는 함수 하나 만든다.
함수 안에 return() 안에 원하는 HTML 넣는다.
원하는 위치에 아까 만든 축약HTML 덩어리를 입력한다.
HTML덩어리를 컴포넌트(component)라 한다.
return (
<div className="App">
<div className="black-nav">
<div>개발 blog</div>
</div>
<div className="list">
<Modal></Modal> // 원하는 위치에 Modal 이라는 컴포넌트 삽입
// <Modal /> 으로도 작성 가능
</div>
function Modal() {
return (
<div className="modal">
<h2>제목</h2>
<p>날짜</p>
<p>상세내용</p>
</div>
);
}
주의점:
<div></div>
쓰기 싫으면 <></>
써도됨관리가 편하다는 장점. 꼭 필요한거만 만들기.
만드는 기준 - 뭘 컴포넌트로 만드는게 좋을까?
반복적으로 출현하는 HTML덩어리들(예: 목록들)
자주 바뀌는 UI들 : 재렌더링이 많이 일어나니까 해당하는 UI만 재렌더링하기 때문에 효율적
하나의 페이지를 구성할때도 컴포넌트로 만드는게 좋음
단점:
state쓸때 복잡해진다 - 기존에 만들었던 변수(예:글제목)는 function App() 안에 선언했던 것.
그렇기에 컴포넌트 함수 내부에서 사용이 불가능
-> props 라는 문법 사용해서 해결해야한다. 아직 안배웠다.