ElementType<P>:P extends DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> ? "a" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "abbr" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "address" : never | P extends DetailedHTMLProps<AreaHTMLAttributes<HTMLAreaElement>, HTMLAreaElement> ? "area" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "article" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "aside" : never | P extends DetailedHTMLProps<AudioHTMLAttributes<HTMLAudioElement>, HTMLAudioElement> ? "audio" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "b" : never | P extends DetailedHTMLProps<BaseHTMLAttributes<HTMLBaseElement>, HTMLBaseElement> ? "base" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "bdi" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "bdo" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "big" : never | P extends DetailedHTMLProps<BlockquoteHTMLAttributes<HTMLElement>, HTMLElement> ? "blockquote" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLBodyElement>, HTMLBodyElement> ? "body" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLBRElement>, HTMLBRElement> ? "br" : never | P extends DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> ? "button" : never | P extends DetailedHTMLProps<CanvasHTMLAttributes<HTMLCanvasElement>, HTMLCanvasElement> ? "canvas" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "caption" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "cite" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "code" : never | P extends DetailedHTMLProps<ColHTMLAttributes<HTMLTableColElement>, HTMLTableColElement> ? "col" : never | P extends DetailedHTMLProps<ColgroupHTMLAttributes<HTMLTableColElement>, HTMLTableColElement> ? "colgroup" : never | P extends DetailedHTMLProps<DataHTMLAttributes<HTMLDataElement>, HTMLDataElement> ? "data" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLDataListElement>, HTMLDataListElement> ? "datalist" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "dd" : never | P extends DetailedHTMLProps<DelHTMLAttributes<HTMLElement>, HTMLElement> ? "del" : never | P extends DetailedHTMLProps<DetailsHTMLAttributes<HTMLElement>, HTMLElement> ? "details" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "dfn" : never | P extends DetailedHTMLProps<DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement> ? "dialog" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> ? "div" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLDListElement>, HTMLDListElement> ? "dl" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "dt" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "em" : never | P extends DetailedHTMLProps<EmbedHTMLAttributes<HTMLEmbedElement>, HTMLEmbedElement> ? "embed" : never | P extends DetailedHTMLProps<FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement> ? "fieldset" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "figcaption" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "figure" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "footer" : never | P extends DetailedHTMLProps<FormHTMLAttributes<HTMLFormElement>, HTMLFormElement> ? "form" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement> ? "h1" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement> ? "h2" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement> ? "h3" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement> ? "h4" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement> ? "h5" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement> ? "h6" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHeadElement>, HTMLHeadElement> ? "head" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "header" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "hgroup" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLHRElement>, HTMLHRElement> ? "hr" : never | P extends DetailedHTMLProps<HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement> ? "html" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "i" : never | P extends DetailedHTMLProps<IframeHTMLAttributes<HTMLIFrameElement>, HTMLIFrameElement> ? "iframe" : never | P extends DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> ? "img" : never | P extends DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> ? "input" : never | P extends DetailedHTMLProps<InsHTMLAttributes<HTMLModElement>, HTMLModElement> ? "ins" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "kbd" : never | P extends DetailedHTMLProps<KeygenHTMLAttributes<HTMLElement>, HTMLElement> ? "keygen" : never | P extends DetailedHTMLProps<LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement> ? "label" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLLegendElement>, HTMLLegendElement> ? "legend" : never | P extends DetailedHTMLProps<LiHTMLAttributes<HTMLLIElement>, HTMLLIElement> ? "li" : never | P extends DetailedHTMLProps<LinkHTMLAttributes<HTMLLinkElement>, HTMLLinkElement> ? "link" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "main" : never | P extends DetailedHTMLProps<MapHTMLAttributes<HTMLMapElement>, HTMLMapElement> ? "map" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "mark" : never | P extends DetailedHTMLProps<MenuHTMLAttributes<HTMLElement>, HTMLElement> ? "menu" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "menuitem" : never | P extends DetailedHTMLProps<MetaHTMLAttributes<HTMLMetaElement>, HTMLMetaElement> ? "meta" : never | P extends DetailedHTMLProps<MeterHTMLAttributes<HTMLElement>, HTMLElement> ? "meter" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "nav" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "noindex" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "noscript" : never | P extends DetailedHTMLProps<ObjectHTMLAttributes<HTMLObjectElement>, HTMLObjectElement> ? "object" : never | P extends DetailedHTMLProps<OlHTMLAttributes<HTMLOListElement>, HTMLOListElement> ? "ol" : never | P extends DetailedHTMLProps<OptgroupHTMLAttributes<HTMLOptGroupElement>, HTMLOptGroupElement> ? "optgroup" : never | P extends DetailedHTMLProps<OptionHTMLAttributes<HTMLOptionElement>, HTMLOptionElement> ? "option" : never | P extends DetailedHTMLProps<OutputHTMLAttributes<HTMLElement>, HTMLElement> ? "output" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement> ? "p" : never | P extends DetailedHTMLProps<ParamHTMLAttributes<HTMLParamElement>, HTMLParamElement> ? "param" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "picture" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLPreElement>, HTMLPreElement> ? "pre" : never | P extends DetailedHTMLProps<ProgressHTMLAttributes<HTMLProgressElement>, HTMLProgressElement> ? "progress" : never | P extends DetailedHTMLProps<QuoteHTMLAttributes<HTMLQuoteElement>, HTMLQuoteElement> ? "q" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "rp" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "rt" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "ruby" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "s" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "samp" : never | P extends DetailedHTMLProps<ScriptHTMLAttributes<HTMLScriptElement>, HTMLScriptElement> ? "script" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "section" : never | P extends DetailedHTMLProps<SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement> ? "select" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "small" : never | P extends DetailedHTMLProps<SourceHTMLAttributes<HTMLSourceElement>, HTMLSourceElement> ? "source" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement> ? "span" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "strong" : never | P extends DetailedHTMLProps<StyleHTMLAttributes<HTMLStyleElement>, HTMLStyleElement> ? "style" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "sub" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "summary" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "sup" : never | P extends DetailedHTMLProps<TableHTMLAttributes<HTMLTableElement>, HTMLTableElement> ? "table" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLTemplateElement>, HTMLTemplateElement> ? "template" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> ? "tbody" : never | P extends DetailedHTMLProps<TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement> ? "td" : never | P extends DetailedHTMLProps<TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement> ? "textarea" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> ? "tfoot" : never | P extends DetailedHTMLProps<ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement> ? "th" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> ? "thead" : never | P extends DetailedHTMLProps<TimeHTMLAttributes<HTMLElement>, HTMLElement> ? "time" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLTitleElement>, HTMLTitleElement> ? "title" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement> ? "tr" : never | P extends DetailedHTMLProps<TrackHTMLAttributes<HTMLTrackElement>, HTMLTrackElement> ? "track" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "u" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLUListElement>, HTMLUListElement> ? "ul" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "var" : never | P extends DetailedHTMLProps<VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement> ? "video" : never | P extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> ? "wbr" : never | P extends DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>, HTMLWebViewElement> ? "webview" : never | P extends SVGProps<SVGSVGElement> ? "svg" : never | P extends SVGProps<SVGElement> ? "animate" : never | P extends SVGProps<SVGElement> ? "animateMotion" : never | P extends SVGProps<SVGElement> ? "animateTransform" : never | P extends SVGProps<SVGCircleElement> ? "circle" : never | P extends SVGProps<SVGClipPathElement> ? "clipPath" : never | P extends SVGProps<SVGDefsElement> ? "defs" : never | P extends SVGProps<SVGDescElement> ? "desc" : never | P extends SVGProps<SVGEllipseElement> ? "ellipse" : never | P extends SVGProps<SVGFEBlendElement> ? "feBlend" : never | P extends SVGProps<SVGFEColorMatrixElement> ? "feColorMatrix" : never | P extends SVGProps<SVGFEComponentTransferElement> ? "feComponentTransfer" : never | P extends SVGProps<SVGFECompositeElement> ? "feComposite" : never | P extends SVGProps<SVGFEConvolveMatrixElement> ? "feConvolveMatrix" : never | P extends SVGProps<SVGFEDiffuseLightingElement> ? "feDiffuseLighting" : never | P extends SVGProps<SVGFEDisplacementMapElement> ? "feDisplacementMap" : never | P extends SVGProps<SVGFEDistantLightElement> ? "feDistantLight" : never | P extends SVGProps<SVGFEDropShadowElement> ? "feDropShadow" : never | P extends SVGProps<SVGFEFloodElement> ? "feFlood" : never | P extends SVGProps<SVGFEFuncAElement> ? "feFuncA" : never | P extends SVGProps<SVGFEFuncBElement> ? "feFuncB" : never | P extends SVGProps<SVGFEFuncGElement> ? "feFuncG" : never | P extends SVGProps<SVGFEFuncRElement> ? "feFuncR" : never | P extends SVGProps<SVGFEGaussianBlurElement> ? "feGaussianBlur" : never | P extends SVGProps<SVGFEImageElement> ? "feImage" : never | P extends SVGProps<SVGFEMergeElement> ? "feMerge" : never | P extends SVGProps<SVGFEMergeNodeElement> ? "feMergeNode" : never | P extends SVGProps<SVGFEMorphologyElement> ? "feMorphology" : never | P extends SVGProps<SVGFEOffsetElement> ? "feOffset" : never | P extends SVGProps<SVGFEPointLightElement> ? "fePointLight" : never | P extends SVGProps<SVGFESpecularLightingElement> ? "feSpecularLighting" : never | P extends SVGProps<SVGFESpotLightElement> ? "feSpotLight" : never | P extends SVGProps<SVGFETileElement> ? "feTile" : never | P extends SVGProps<SVGFETurbulenceElement> ? "feTurbulence" : never | P extends SVGProps<SVGFilterElement> ? "filter" : never | P extends SVGProps<SVGForeignObjectElement> ? "foreignObject" : never | P extends SVGProps<SVGGElement> ? "g" : never | P extends SVGProps<SVGImageElement> ? "image" : never | P extends SVGProps<SVGLineElement> ? "line" : never | P extends SVGProps<SVGLinearGradientElement> ? "linearGradient" : never | P extends SVGProps<SVGMarkerElement> ? "marker" : never | P extends SVGProps<SVGMaskElement> ? "mask" : never | P extends SVGProps<SVGMetadataElement> ? "metadata" : never | P extends SVGProps<SVGElement> ? "mpath" : never | P extends SVGProps<SVGPathElement> ? "path" : never | P extends SVGProps<SVGPatternElement> ? "pattern" : never | P extends SVGProps<SVGPolygonElement> ? "polygon" : never | P extends SVGProps<SVGPolylineElement> ? "polyline" : never | P extends SVGProps<SVGRadialGradientElement> ? "radialGradient" : never | P extends SVGProps<SVGRectElement> ? "rect" : never | P extends SVGProps<SVGStopElement> ? "stop" : never | P extends SVGProps<SVGSwitchElement> ? "switch" : never | P extends SVGProps<SVGSymbolElement> ? "symbol" : never | P extends SVGProps<SVGTextElement> ? "text" : never | P extends SVGProps<SVGTextPathElement> ? "textPath" : never | P extends SVGProps<SVGTSpanElement> ? "tspan" : never | P extends SVGProps<SVGUseElement> ? "use" : never | P extends SVGProps<SVGViewElement> ? "view" : never | ComponentType<P>
This lifecycle is invoked after an error has been thrown by a descendant component.
It receives the error that was thrown as a parameter and should return a value to update state.
Note: its presence prevents any of the deprecated lifecycle methods from being invoked
Accepts a context object (the value returned from React.createContext) and returns the current
context value, as given by the nearest context provider for the given context.
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 React.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.
Prefer the standard useEffect when possible to avoid blocking visual updates.
If you’re migrating code from a class component, useLayoutEffect fires in the same phase as
componentDidMount and componentDidUpdate.
useReducer is usually preferable to useState when you have complex state logic that involves
multiple sub-values. It also lets you optimize performance for components that trigger deep
updates because you can pass dispatch down instead of callbacks.
useReducer is usually preferable to useState when you have complex state logic that involves
multiple sub-values. It also lets you optimize performance for components that trigger deep
updates because you can pass dispatch down instead of callbacks.
useReducer is usually preferable to useState when you have complex state logic that involves
multiple sub-values. It also lets you optimize performance for components that trigger deep
updates because you can pass dispatch down instead of callbacks.
useRef returns a mutable ref object whose .current property is initialized to the passed argument
(initialValue). The returned object will persist for the full lifetime of the component.
Note that useRef() is useful for more than the ref attribute. It’s handy for keeping any mutable
value around similar to how you’d use instance fields in classes.
useRef returns a mutable ref object whose .current property is initialized to the passed argument
(initialValue). The returned object will persist for the full lifetime of the component.
Note that useRef() is useful for more than the ref attribute. It’s handy for keeping any mutable
value around similar to how you’d use instance fields in classes.
Usage note: if you need the result of useRef to be directly mutable, include | null in the type
of the generic argument.
useRef returns a mutable ref object whose .current property is initialized to the passed argument
(initialValue). The returned object will persist for the full lifetime of the component.
Note that useRef() is useful for more than the ref attribute. It’s handy for keeping any mutable
value around similar to how you’d use instance fields in classes.
We use an intersection type to infer multiple type parameters from a single argument, which is useful for many top-level API defs. See https://github.com/Microsoft/TypeScript/issues/7234 for more info.