Today I Learned
[React] 컴포넌트 Components
디아_
2024. 11. 20. 22:19
728x90
Component Functions
- 컴포넌트명은 대문자로 시작해야한다
- 렌더가능한 값을 리턴해야한다
// 예시 1 - 리액트 컴폰넌트 예시
import React, { useState } from 'react';
function Counter() { // 컴포넌트 함수는 대문자로 시작
const [count, setCount] = useState(0);
return (
// 화면에 렌더링 가능한 요소를 반환
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>
Increment
</button>
</div>
);
}
export default Counter;
컴포넌트 렌더링부분 return 할때 하나의 요소만 리턴해야하는 이유
JSX 요소를 리턴할 때 여러 요소를 병렬로 써서 리턴하면 에러가 발생한다.
// 예시 2
// ...
return (
// 에러
<div>hello</div>
<p>hi</p>
)
아래처럼 상위 태그로 감싸서 하나의 요소로 만들어서 리턴하면 에러가 발생하지 않는다.
// 예시 2-1
// ...
return (
<div id="content">
<div>hello</div>
<p>hi</p>
</div>
)
왜 상위 태그로 감싸서 하나의 요소로 리턴해야할까? 그 이유는 함수는 한번에 하나의 값만 리턴할 수 있기 때문이다. 위의 예시2 코드를 리액트가 제공하는 createElement API를 사용해서 작성하면 아래와 같다.
// 예시 3
// ...
return (
// 에러
React.createElement('div', null, 'hello');
React.createElement('p', null, 'hi');
)
즉, 두개의 값을 리턴하고 있다. 함수는 하나의 값만 리턴할 수 있으므로 에러가 발생한다. 상위에 태그를 하나 더 씌우면 하나의 값만 리턴하게 된다.
// 예시 3-1
// ...
return (
React.createElememt('div', {id: 'content'},
React.createElement('div', null, 'hello'),
React.createElement('p', null, 'hi'));
)
언제 컴포넌트 분리하는것이 좋을까?
한 컴포넌트에 여러개의 responsibilities가 있으면 state가 꼬일 수 있고, 의도한 대로 렌더링 되지 않을 수 있다. 한 컴포넌트에는 하나의 기능, 하나의 관심사만 갖는것이 좋다.
728x90
