Accepts a context object (the value returned from createContext) and
returns the current context value for that context. The current context
value is determined by the value prop of the nearest Context.Provider
above the calling component in the tree.
useImperativeHandle customizes the instance value that is exposed to parent
components when using ref. As always, imperative code using refs should be
avoided in most cases. useImperativeHandle should be used with forwardRef.
The signature is identical to useEffect, but it fires synchronously after
all DOM mutations. Use this to read layout from the DOM and synchronously
re-render. Updates scheduled inside useLayoutEffect will be flushed
synchronously, before the browser has a chance to paint. [...]