상호작용하는 기본적인 형태로 기능을 수행할 수 있는 최소 단위 ⇒ 재사용 가능한 UI 구성단위
재활용하여 사용할 수 있다.
로그인 페이지를 만들 경우 <input/> 태그가 여러개 필요하다. 비슷한 페이지인 회원가입 페이지나 내정보수정 페이지가 추가되어 똑같은 <input/>이 필요하다면 <input/>요소를 위해 똑같은 html 코드를 복붙해서 작성해야했다. 이럴 때 동일 코드가 반복되는 부분을 하나의 component로 만들어서 같은 디자인의 <input/>이 필요한 곳마다 재사용할 수 있다.
코드 유지보수에 좋다.
컴포넌트 하나를 만들고 재사용해서 사용하면 디자인이 바뀌었을 때 css 한줄만 수정하면 로그인, 회원가입, 내정보수정 페이지에 바뀐 디자인이 모두 반영될 것이다.
페이지 구성 요소를 한 눈에 파악하기 좋다.
컴포넌트는 또 다른 컴포넌트를 포함할 수 있다. (부모 컴포넌트 - 자식 컴포넌트)
독립적으로 재사용가능한 코드로 관리할 수 있다. 하나의 컴포넌트에 필요한 html,css,js를 모두 합쳐서 만들 수 있다.
컴포넌트는 함수랑 비슷하다. 함수도 기능이 독립적이고 한번 선언해두면 필요할 때 마다 호출하면서 재사용할 수 있는데, 컴포넌트도 함수처럼 input을 받아서 return할 수 있다.
React 컴포넌트에서 input을 props라고 말하고 return은 화면에 보여져야할 React요소가 return된다.
import React from 'react'
class Component extends React.Component {
render(){
return(
<div>
<h1>This is Class Component!<h1>
</div>
)
}
}
export default Component
render() 함수가 꼭 있어야한다.
return도 해주어야한다.
그 안에 보여주어야 하는 JSX를 반환한다.
import React from 'react'
const Component = () => {
return (
<div>
<h1>This is Functional Componenet!</h1>
</div>
)
}
export default Component
Hook 기능이 추가되면서 함수형 컴포넌트에서도 state를 사용할 수 있게 되었다위처럼 정의한 컴포넌트는 함수이름 또는 class이름으로 사용할 수 있다. 태그처럼 <Component /> 로 작성한다.
컴포넌트를 사용할 때, 원하는 property를 추가할 수 있다. 그러면 컴포넌트에서 파라미터로 해당 property를 받아서 사용할 수 있다. 이것을 props라고 한다. props는 property의 줄임말이다.
. 으로 속성명에 접근 가능하다.
props.속성명 으로 속성 값을 가져올 수 있다.
//1. Welcome 컴포넌트 정의
function Welcome(props){
feturn <h1>Hello, {props.name}!</h1>;
}
//2. App 컴포넌트 정의
function App() {
return (
<div>
<Welcome name="Lemon" />
<Welcome name="Mike" />
<Welcome name="John" />
</div>
)
}
ReactDOM.render(<APP />, document.getElementById("root"))


.avatar 부분을 Avatar라는 이름의 컴포넌트로 들어보자.
Comment 컴포넌트는 props.author로 접근해서 avatarUrl과 name을 가져왔는데,
Avatar 컴포넌트에서는 좀 더 직관적으로 사용하도록 user라는 이름으로 받아오겠다.
props.user 에서 avatarUrl, name값을 가져오자. <Avatar/> 사용하는 측에서 user라는 attribute를 추가해야겠다

Avatar 컴포넌트에서 user의 avatarUrl과 name이 필요하므로,
Comment 컴포넌트에서 props.author 정보를 user라는 attribute로 넘겨주었다. props.author의 avatarUrl, name 값이 user를 통해 전달되었습니다.

.user-info 부분을 컴포넌트로 만들어보자
재사용 가능성이 조금이라도 있다면 컴포넌트로 만들어주는 것이 좋다.

이렇게 분리했더니 Comment 컴포넌트가 간결해졌다!

처음 Comment 컴포넌트와 분리 후 컴포넌트 들

코드가 눈으로 볼 수 있도록 그려지는 것을 렌더링(rendering)이라고 한다.
React 요소가 DOM node에 추가되어 화면에 렌더되려면 ReactDOM.render 함수를 사용해야한다.
첫 번째 인자에는 JSX로 React요소를 인자로 넘기고, 두번째 인자는 해당 요소를 렌더하고 싶은 container(부모요소)를 전달한다.
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
)
컴포넌트(Component) : 재사용 가능한 UI 구성단위
특징
props라고 말하고 return은 화면에 보여져야할 React요소가 return된다.컴포넌트 선언 방식
컴포넌트 사용
property를 추가할 수 있다.property를 받아서 사용할 수 있다. 이것을 props라고 한다.렌더링(rendering)
ReactDOM.render 함수를 사용