createElement
React.createElement(
type, // 태그 이름 문자열 | 리액트 컴포넌트 | React.Fragment
[props], // 리액트 컴포넌트에 넣어주는 데이터 객체
[...children] // 자식으로 넣어주는 요소들
);
1. 태그 이름 문자열 type
// <h1>type이 "태그 이름 문자열" 입니다.</h1>
ReactDOM.render(
React.createElement("h1", null, `type이 "태그 이름 문자열" 입니다.`),
document.querySelector("#root")
);
2. 리액트 컴포넌트 type
// <Component></Component> => <Component /> => <p>type이 "리액트 컴포넌트" 입니다.</p>
const Component = () => {
return React.createElement("p", null, `type이 "리액트 컴포넌트" 입니다.`);
};
ReactDOM.render(
React.createElement(Component, null, null),
document.querySelector("#root")
);
3. React.Fragment
// 또 하나의 태그 없이 여러개의 요소를 바로 넣을 수 있다.
ReactDOM.render(
React.createElement(
React.Fragment,
null,
`type이 "React Fragment" 입니다.`,
`type이 "React Fragment" 입니다.`,
`type이 "React Fragment" 입니다.`
),
document.querySelector("#root")
);
4. 복잡한 리액트 엘리먼트 모임
// 리액트의 한계 => JSX로 극복
// <div><div><h1>주제</h1><ul><li>React</li><li>Vue</li></ul></div></div>
ReactDOM.render(
React.createElement(
"div",
null,
React.createElement(
"div",
null,
React.createElement("h1", null, "주제"),
React.createElement(
"ul",
null,
React.createElement("li", null, "React"),
React.createElement("li", null, "Vue")
)
)
),
document.querySelector("#root")
);
댓글남기기