Hooks in React enable usage of React state and lifecycle features without using a class. Released in React v16.8.0, Hooks resolve issues like sharing stateful logic across components.
Rather than writing higher-order components, a customized hook can be implemented outside of a component in order to reuse that logic and test it in isolation. This also means the components themselves become simpler to manage by breaking it into smaller pieces of state related functions.
Functional components have many benefits over using classes. The top-down approach in functional components means it's easier to read and comprehend. In a class, binding this
can be difficult to keep track of and introduces potential for bugs. In addition, without classes there is no need to wire up the component lifecycle functions and write potentially complicated logic to identify changes in props or state.