What are the differences between functional and class components?

Functional components are JavaScript functions. Before the introduction of hooks, state and lifecycle methods were available to class components only. Now functional components can maintain state with useState hook.