Function Component인가요? Functional Component인가요?
Function 컴포넌트입니다.
Functional 컴포넌트는 함수형 컴포넌트라는 뜻인데, 함수형 프로그래밍으로 작성된 컴포넌트라는 뜻입니다.
함수형 프로그래밍라는 것은 선언형이고 순수함수이며, 부수효과가 없도록 한다.
또 다른 특징으로 참조 투명성을 갖는다.
참조 투명성은 해당 순수함수의 실행 결과값을, 사용하는 코드에서 치환시켰을때 동일한 결과값이 나오는지로 판단할 수 있다.
const add = (a,b) => a+b;
console.log(add(3,4)) // 7
위 코드는 참조 투명성을 가진다.
console.log(7) // 7
함수의 결과값을 사용하는 쪽에서 대체했을때, 같은 결과값을 기대할 수 있기 때문이다.
하지만 아래는 참조투명성을 만족하지 않는다.
const add = (a,b) => {
console.log(a+b);
return a+b;
}
console.log(add(3,4)) // 7 7
왜냐하면
console.log(7) // 7
치환한 결과값을 사용했을때의 기대값이 다르기 때문이다.
리액트 컴포넌트도 그렇다.
컴포넌트에서 useEffect를 사용할 수 있다. 그리고 return 으로 JSX가 반환된다.
그럼 바깥에서 사용할때 return하는 JSX으로 대체했을때 같은 결과값을 기대할 수 있을까?
useEffect는 렌더링이 끝나고 이루어지는 작업이기 때문에, 같은 결과값을 보장할 수 없다.
그러므로 참조 투명성을 만족하지 않고, 함수형 컴포넌트라고 부를 수 없다.
그냥 "함수 컴포넌트""일 뿐이다.
'개발 > FrontEnd Interview' 카테고리의 다른 글
브라우저에서 엔진의 종류는 무엇이 있나요? (0) | 2021.06.27 |
---|---|
Babel plugin과 preset (0) | 2021.06.27 |
Context API의 리렌더링을 해결하기 위한 방법으로는 무엇이 있습니까? (0) | 2021.06.23 |
Context API는 무엇인가요? (0) | 2021.06.23 |
CSS-in-JS와 CSS-in-CSS의 차이점은 무엇인가요? (0) | 2021.06.23 |