I cannot understand why the following `useImperativeHandle`, `useLayoutEffect`, and `useDebugValue` hooks are needed, can you give examples when they can be used, but not examples from the documentation please.