To sum up everything above:
•
Сlass components were the only option to add states to components and manipulate lifecycle. However, it has changed since the introduction of Hooks, which gave the same opportunities to functional components as classes had.
•
The major difference is the syntax. It relates to the way we declare components, pass props, handling states, manage lifecycle.
•
Function components capture the props and state by default. It is not a bug, but a feature of functional components.
•
Functional components require less code to write an equal component. However, that doesn’t mean that functional components more readable and convenient to use. If a developer is used to work with object-oriented programming, he finds using class components much more comfortable. Those who are used to functional programming like functional components more than class components.
•
There are two most popular tools to test functional and class components: Enzyme and Jest. They work great for both types of components.
•
There is no big difference in render time between class and functional components.
Today you can build a whole app using only functional components. It was impossible till 2019. That became possible thanks to Hooks. Does Hooks replace class components in the coming years? We don’t think so, because there are still some features that functional components can’t reproduce. And there will always be developers, who are used to working with objects rather than with functions. However, we await the growth in functional component popularity and an increase in the number of features for Hooks. And it’s likely that the functionality Hooks will provide goes beyond class components possibilities.
위의 모든 내용을 요약하면:
∙클래스 컴포넌트는 컴포넌트에 상태를 추가하고 라이프 사이클을 조작할 수 있는 유일한 옵션이었다. 그러나 훅스가 도입되면서 클래스와 같은 기능적 구성 요소에도 기회를 부여하게 되었다.
가장 큰 차이점은 구문이다. 이것은 우리가 구성요소를 선언하고, 소품을 전달하고, 상태를 처리하고, 라이프사이클을 관리하는 방식과 관련이 있습니다.
함수 구성요소는 기본적으로 특성 및 상태를 캡처합니다. 버그가 아니라 기능성 부품의 특징입니다.
함수 구성 요소는 동일한 구성 요소를 작성하기 위해 더 적은 코드를 필요로 합니다. 그렇다고 기능성 부품이 더 읽기 쉽고 사용하기 편리하다는 뜻은 아닙니다. 개발자가 객체 지향 프로그래밍을 사용하는 경우 클래스 구성 요소를 사용하는 것이 훨씬 편리합니다. 함수형 프로그래밍에 익숙한 사람들은 클래스 구성요소보다 함수 구성요소를 더 좋아한다.
기능 및 클래스 구성요소를 테스트하는 가장 인기 있는 두 가지 도구가 있습니다: 효소와 제스트. 두 가지 유형의 구성 요소 모두 잘 작동합니다.
클래스 및 함수 구성요소 간 렌더 시간에는 큰 차이가 없습니다.
오늘날 기능적인 구성 요소만을 사용하여 전체 앱을 만들 수 있습니다. 그것은 2019년까지 불가능했다. 그것이 가능해진 것은 훅스 덕분입니다. Hooks가 다음 몇 년 동안 클래스 구성요소를 대체합니까? 아직 기능적인 구성 요소들이 재현할 수 없는 기능들이 있기 때문에 우리는 그렇게 생각하지 않습니다. 그리고 기능보다는 객체로 작업하는 데 익숙한 개발자들이 항상 있을 것입니다. 그러나 기능성 구성 요소의 인기의 증가와 Hooks의 기능 수의 증가를 기다리고 있습니다. 그리고 Hooks가 제공하는 기능은 클래스 구성요소 가능성을 넘어설 가능성이 높습니다.