
여러 엘리먼트를 작성하고자 하는 경우, 최상위에서 opening 태그와 closing 태그로 감싸줘야 한다.
React가 사용하는 Virtual DOM 방식에서는 컴포넌트 변화를 감지할 때 효율적으로 비교하고자 컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야 한다라는 규칙이 있기 때문이다.

React.Fragment
<React.Fragment></React.Fragment>태그를 사용하면DOM에 의미없는 태그(div)를 사용하지 않고 여러 하위 노드들을 그룹화해서 사용할 수 있다.
<></>와 같이 단축해서 쓸 수도 있다. 다만, 단축해서 쓸 경우key값을 설정할 수 없다.

className으로 작성해줘야 한다. 만약 원래대로 class라고 작성할 경우 React에서는 이를 html 클랙스 속성 대신 자바스크립트 클래스로 인식한다.

{})를 써야한다. 중괄호가 없으면 일반 텍스트로 인식한다.

React에서 여러 개의 HTML 엘리먼트를 표시할 때는 map() 함수를 사용한다. map() 함수를 사용할 때는 반드시 'key' JSX 속성을 넣어야 한다. 'key' JSX 속성을 넣지 않으면 리스트의 각 항목에 key를 넣어야 한다는 경고가 표시된다.
key 속성값은 가능하면 데이터에서 제공하는 id를 할당해야 한다. key 속성값은 id와 마찬가지로 변하지 않고, 예상 가능하며, 유일해야 하기 때문이다. 정 고유한 id가 없는 경우에만 배열 인덱스를 넣어서 해결할 수 있지만, 배열 인덱스는 최후의 수단(as a last resort)으로만 사용해야한다.

const posts = [
{ id: 1, title: "Hello World", content: "Welcome to learning React!" },
{ id: 2, title: "Installation", content: "You can install React via npm." },
];
// map 메서드를 변수로 추출한 방법
function Blog() {
const postToElement = (post) => (
<div>
<h3>{post.title}</h3>
<p>{post.content}</p>
</div>
);
const blogs = posts.map(postToElement);
return <div className="post-wrapper">{blogs}</div>;
}
// map 메서드를 return문 안에 인라인으로 처리한 방법
function Blog() {
const blogs = posts.map((post) => (
<div key={post.id}>
<h3>{post.title}</h3>
<p>{post.content}</p>
</div>
));
return <div className="post-wrapper">{blogs}</div>;
}