Step3. React는 Component로 구성되며, Component는 state(Data)와 Render(view)로 구성된다.
- React는 Data와 화면(view)를 일치시키기 위해서, 만들어졌습니다. 따라서, Data(State)를 다루는 곳과 화면에 반영(Render)하는 영역이 있습니다. 이 둘을 합쳐서 Component라고 하는데, 컴포넌트가 React의 최소 단위라고 할 수 있습니다.
- Class Component로 보면, Component의 구성을 한눈에 볼 수 있습니다. (원시적인 형태)
Example Code) 좋아요 버튼 Class Component
// Class Component로
// React가 설치 되어있다고 가정합니다.
import react from 'react'
const e = React.createElement;
class LikeButton extends React.Component{
constrctor(props){
super(props);
this.state ={liked:false};
}
render(){
return e("button",{onClick:()=>{this.setState({liked:true})},type:"submit"},
this.state.liked === true ? "Liked" : "Like",);
}
}
ReactDOM.render(e(LikeButton),document.querySelector("#root"));
Step4. React는 JSX를 지원하고, IF,For을 각각 삼항연산자,map을 이용한다.
- React의 Render 부분을 보면, 상당히 복잡하게 되어있고 가독성이 좋지않다. 따라서, 익숙한 "Tag 문법"을 위해서, Babel 친구의 힘을 빌려서 JSX라는 형태를 지원합니다.
- 또한, Render 부분에 return은 딱 1개의 tag(<></>)만 반환할 수 있으며 , Component 내에서의 IF,For 문법은 삼항연산자,map을 각각 이용하게 된다.
- JSX로 작성되어진 Tag는 CamelCase가 기본이며, Component 또한, CamelCase가 기본이다.(첫문자는 대문자가 국룰,지키지 않을 시 에러발생.)
Example Code) 좋아요 버튼 Class Component with JSX
// Class Component로
// React가 설치 되어있다고 가정합니다.
import react from 'react'
const e = React.createElement;
class LikeButton extends React.Component{
state ={
liked:false;
}
// Render는 State가 갱신될 때마다 실행된다. 따라서, Redner의 Return은 가볍게 만들어 주는게 좋다.
onclick = () =>{
this.setState({liked:true})
}
change =() =>{
this.state.liked === true ? "Liked" : "Like"
}
render(){
return <button type:"submit" onClick={this.onclick}>Like</button>
{this.change}
//Babel이 아래와 같은 역할을 해준다.
/*
this code equal , up
return e("button",
{ onClick:()=>{ this.setState({ liked:true })},type:"submit"},
this.state.liked === true ? "Liked" : "Like",);
*/
}
}
ReactDOM.render(<LikeButton />,document.querySelector("#root"));
// Like button을 여러개 생성가능하게 된다.
// ReactDOM.render(<div><LikeButton /><LikeButton /><LikeButton /></div>,document.querySelector("#root"));
'Web Front-end > React' 카테고리의 다른 글
[React/JS/SPA/Render] React의 Rendering (0) | 2022.09.16 |
---|---|
[React/JSX/Basic/반복문/조건문] JSX의 편리함 (0) | 2022.09.15 |
[React/jsx/DOM/Basic] React의 DOM 조작과 JSX (0) | 2022.09.14 |
[React/SPA/View] React의 특징 (0) | 2022.07.18 |
[React/JS] 리왜씀 (React 왜 쓰나요) (0) | 2022.07.18 |