<!-- HTMLElement -->
<img src="이미지 주소"/>
<button class="클래스 이름">버튼</button>
<!-- 내가 만든 컴포넌트 -->
<내가지은이름1 name="Mark" />
<내가지은이름 prop={false}>내용</내가지은이름>
<!--
- src, class, name, props 밖에서 넣어주는 데이터
- 문서(HTML), 스타일(CSS), 동작(JS) 를 합쳐서 내가 만든 일종의 태그
-->
// 1. 리액트 컴포넌트 => HTMLElement 연결하기
import ReactDOM from 'react-dom';
// 2. 리액트 컴포넌트 만들기
import React from 'react';
// class component 정의
class ClassComponent extends React.Component {
render() {
return <div> hello </div>;
}
}
// class component 사용
ReactDOM.render(
<ClassComponent/>,document.querySelector("#root")
);
function component 정의 1
function FunctionComponent() {
return <div> hello </div>;
}
function component 정의 2
const FunctionComponent = () => {
return <div> hello </div>;
};
//function component 사용
ReactDOM.render(
<FunctionComponent/>,document.querySelector("#root")
);
ReactDOM.render(
React.createElement(
[types],
[props],
[children]
)
)
예시
ReactDOM.render(
React.createElement(
"h1",
null,
"안녕하세용"
),
document.querySelector("#root")
);
비효율적이다 하단예시
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")
);
<script type= "text/babel">
ReactDOM.render(
<div>
<div>
<h1>주제</h1>
<ul>
<li>리액트</li>
<li>뷰</li>
</ul>
</div>
</div>,
document.querySelector("#root")
);
</script>
<>자식들</>
를 사용합니다. => Fragment<p>어쩌구</p>
<br />
class Comp extends React.Component {
render() {
return(
<div>
<button onClick = {() => {
console.log('clicked');
}}>
</div>
)
}
}
리액트 컴포넌트는 탄생부터 죽음까지 , 여러지점에서 개발자가 작업이 가능하도록 메서드를 오버라이딩 할 수 있게 해준다.
Component 생성 및 마운트 ( < ver 16.3 이전)
class App extends React.Component {
state = {
age: 20,
};
constructor(props) {
super(props);
console.log("constructor", props);
}
render() {
console.log("render");
return (
<div>
<h2>
Hello {this.props.name} - {this.state.age}
</h2>
</div>
);
}
componentWillMount() {
console.log("will mount");
}
componentDidMount() {
console.log("Did mount");
}
}
ReactDOM.render(<App name="Mark" />, document.querySelector("#root"));