5. React - function component(함수 컴포넌트), react 기초 실습
React에는 두 종류의 컴포넌트가 존재합니다.
함수 컴포넌트(function component)와 클래스 컴포넌트(class component) 입니다.
두 컴포넌트의 차이점은 클래스 컴포넌트는 React.Component라는 부모 클래스를 상속받기 때문에 함수 컴포넌트에 비해 더 많은 기능을 갖는다는 점입니다. (두 컴포넌트가 무엇인지는 이따가 밑에서 설명드릴게요~실습하면서)
그러나 기능이 많다고 무조건 클래스 컴포넌트를 사용하지는 말아야 합니다.
그 이유는 클래스 컴포넌트가 기능이 많은 만큼 메모리와 리소스를 많이 사용해야 한다는 뜻이기 때문입니다.
React관련 글 초반에 작성하기로 했던 부분을 지금부터 조금씩 진행하려고 합니다.
처음에 계획했던 것에서 좀 바뀌는 부분이 있을 수 도 있습니다. 기존에는 css로 했는데 가능하면 scss로 진행해볼까 합니다.(가능하면요..)
진행하면서 나오는 필요한 개념들을 그때그때 작성하면서 진행할 예정입니다.
이번에는 함수 컴포넌트를 하고 class component가 필요할 때 그때 설명하는 식으로요!
그럼 지금부터 조금씩 만들어 볼게요. (저는 Webstorm 30 일판을 사용합니다.)
그리고 자바스크립트 함수 사용에 대해서 모르시는 분들은 https://diarycafe0729.tistory.com/48에서 간단한 형식이라도 보고 오시길 바랍니다.
1. 우선 진행하시는 폴더에 bnb.css와 bnb.js를 만들어주세요.
2. index.html을 수정해주세요. (app.js가 아니라 bnb.js를 사용하기 위해)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Scoreboard</title> <link rel="stylesheet" href="./bnb.css" /> </head> <body> <div id="root"></div> <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <script type="text/babel" src="./bnb.js"></script> </body> </html> |
3. component란?
component는 UI를 독립적이고 재사용이 가능하도록 분리시켜 줄 수 있는 조각이라고 볼 수 있다.
한 component는 다른 컴포넌트를 참조해서 출력을 해줄 수 있다.
버튼, 폼, 다이얼로그, 화면 등 컴포넌트로 표현 된다.
4. function component?
function component는 props를 주입해서 JSX를 리턴하는 기능을 수행한다.
function component를 작성하고 사용하는 데는 2가지 규칙이 있다.
1) function component를 생성할 때 첫 글자는 대문자로 명시되어야 한다.
ex) const Title = () => {}
* 소문자는 html element로 인식할 수 있기 때문
2) render()에 component를 배치할 때는 닫는 태그가 반드시 있어야 한다.
ex) ReactDOM.render(<Title></Title> ( or <Title />), document.getElementById('root'));
5. React님이 호스팅 하는 아파트의 개인실을 function component로 작성하기
bnb.js
const Header = () => { return ( <h1>React님이 호스팅하는 아파트의 개인실</h1> ) } ReactDOM.render(<Header/>, document.getElementById('root')) |
* 위에 걸어둔 함수 관련 글에서 애로우 펑션에서 한 줄 코드는 {}와 return이 없어도 된다는 것 기억하시나요?
const Header = () => ( <h1>React님이 호스팅하는 아파트의 개인실</h1> ) ReactDOM.render(<Header/>, document.getElementById('root')) |
결과 화면 :
앞에 펑션을 공부하신 분들은 아마 이게 애로우 펑션이랑 뭐가 다른거지? 라고 생각하실 수 있을 거에요. ( 에로우 펑션이 아닌 함수 선언식이나 표현식으로 해도 상관없음)
createElement 글에서 props라는 파라미터에 대해서 말씀드린 적이 있습니다.
function component는 props 객체 인자를 받은 후 React element를 반환하므로 유효한 React 컴포넌트입니다.
이러한 컴포넌트는 JavaScript 함수 이기 때문에 함수 컴포넌트라고 불립니다.
다음 글에서는 props를 넘겨받아 출력하는 것까지 해보겠습니다.
이해가 안되는 부분이나 잘못된 부분이 있으면 댓글 달아주세요~