Hooks are a new addition in React 16.8. They allow for state and other React features to be used in functional components, instead of in class-based components alone. This helps to eliminate the need for converting function components to class-based components just to be able to use state or other features of React.
Hooks are functions that give components a way to access state, lifecycle and other features without classes. Hooks take away the need for classes and makes the code more concise and easier to debug and gain insight into.
Using React hooks, you can use state inside function components by using the useState hook. This lets you return the current state of the component, and a setter function to be used to update the value. The useEffect hook can be used to run functions and track state changes based on certain events, such as when the components first renders, and so on. The useReducer hook is used to manage state and dispatch actions, and the useContext hook gives access to the values stored in the current context.
Hooks also allow developers to share logic between components by allowing them to create custom hooks. Custom hooks are custom functions that are used to share common logic and behaviours. This helps to eliminate code duplication and enables the reuse of code.
Overall, hooks provide a simple, yet powerful way to introduce state and other features of React into functional components – allowing them to take advantage of the benefits of both functional and class-based components.