It is a lightweight in-memory representation of the actual DOM to track changes in the UI and efficiently update the real DOM when necessary.
useState: to add and manage state to functional components
useReducer: to add and manage complex state
useEffect: to execute side effects during rendering and hooking into lifecycle hooks
useMemo: to memoise the output of a function
useCallback: to memoise a function declaration when a function is passed to children components that are memoised.
useContext: to access context object
useLayoutEffect: synchronously useEffect
useRef: to access and manipulate DOM and store values that do not cause rerender on updates.
use
useDebugValue
useId
useDeferredValue
useTransition
useSyncExternalStore
useInsertionEffect
useImperativeHandle