함수형 컴포넌트
React에는 class 컴포넌트
와 함수형 컴포넌트
가 존재합니다.
만약에 state 가 없고, life cycle 메소드가 필요없는 멍청한 컴포넌트라면, 함수형 컴포넌트로 선언을 하는것이 좋은 패턴입니다.
보기에도 깔끔하고, 컴포넌트의 로직을 컴포넌트 바깥으로 옮기므로, 나중에 테스팅하기에도 편리합니다.
함수형 컴포넌트는 this 에 접근하는것이 불가능하며, lifeCycle API 들을 사용하는것이 불가능합니다. 또한 오직 전달받는 props 에만 의존합니다.
Props 받는 방법
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
ES6 의 destructure
(구조 분해 할당) 기능을 사용하면 다음과 같이 선언 할 수 있습니다.
function Welcome({ name }) {
return <h1>Hello, {name}</h1>;
}
많이 발생하는 실수
함수형 컴포넌트는 JSX
value를 return해야지 렌더링이 됩니다.
class 컴포넌트는 render()
함수에서 명시적으로 return하기 때문에 잘못된 값을 return할 일이 적지만 함수형 컴포넌트에서 생각보다 많이? JSX
를 return 하지 않아 발생한 문법이 있었습니다.
정상
const Header = () => <div className="Header">POSTS</div>;
1번째 함수는
{ }
으로 감싸지 않아return
한다는 형태를 나타내고
const Header = () => {
return <div className="Header">POSTS</div>;
};
2번째는
{ }
으로 감싸고return
키워드를 통해 명시적으로 함수가 return된다고 말하고 있습니다.
2개의 코드 모두
JSX
를 return 한다고 출력하고 있습니다.
오류
const Header = () => {
<div className="Header">POSTS</div>;
};
보기에는 위의 코드와 달라보이지 않지만
{ }
으로 함수임을 선언했지만return
이 없기 때문에JSX
문법이 실행되는 코드입니다. webpack 트랜스 파일링 단계에서 err로 인식하지 않기 때문에 많은 실수를 유발하는 코드입니다. react 렌더링을 위해서는return
되야하는것을 잊지말아요!!
아래의 err message를 보면 렌더링에서 반환 된 항목이 없습니다.
라고 출력하고 있습니다.
Author And Source
이 문제에 관하여(함수형 컴포넌트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ruddms936/함수형-컴포넌트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)