{"id":15763,"date":"2023-04-04T14:49:36","date_gmt":"2023-04-04T11:19:36","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/refs-in-react-from-access-to-dom-to-imperative-api-j2l\/"},"modified":"2023-04-04T14:49:36","modified_gmt":"2023-04-04T11:19:36","slug":"refs-in-react-from-access-to-dom-to-imperative-api-j2l","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/refs-in-react-from-access-to-dom-to-imperative-api-j2l\/","title":{"rendered":"Refs \u062f\u0631 React: \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 DOM \u062a\u0627 API \u0636\u0631\u0648\u0631\u06cc"},"content":{"rendered":"<div data-article-id=\"1419279\" id=\"article-body\">\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/Refs-\u062f\u0631-React-\u0627\u0632-\u062f\u0633\u062a\u0631\u0633\u06cc-\u0628\u0647-DOM-\u062a\u0627-API-\u0636\u0631\u0648\u0631\u06cc.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"880\" height=\"587\" title=\"\"><\/p>\n<p>\u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 https:\/\/www.developerway.com \u0645\u0646\u062a\u0634\u0631 \u0634\u062f.  \u0627\u06cc\u0646 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0642\u0627\u0644\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0628\u06cc\u0644 \u062f\u0627\u0631\u062f \ud83d\ude09<\/p>\n<hr\/>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0632\u06cc\u0628\u0627\u06cc React \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0628\u0631\u062e\u0648\u0631\u062f \u0628\u0627 DOM \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f.  \u0627\u06a9\u0646\u0648\u0646\u060c \u0628\u0647\u200c\u062c\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u06cc \u062f\u0633\u062a\u06cc \u0639\u0646\u0627\u0635\u0631\u060c \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0646 \u062f\u0631\u0628\u0627\u0631\u0647 \u0646\u062d\u0648\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0628\u0647 \u0622\u0646 \u0639\u0646\u0627\u0635\u0631\u060c \u06cc\u0627 \u0645\u0628\u0627\u0631\u0632\u0647 \u0628\u0627 \u0646\u0627\u0647\u0645\u0627\u0647\u0646\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u0631\u0648\u0631\u06af\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0641\u0642\u0637 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u0631\u0648\u06cc \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0647\u0646\u0648\u0632 \u0645\u0648\u0627\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f (\u0647\u0631 \u0686\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0627\u0646\u062f\u06a9!) \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 DOM \u0648\u0627\u0642\u0639\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<p>\u0648 \u0648\u0642\u062a\u06cc \u0646\u0648\u0628\u062a \u0628\u0647 DOM \u0648\u0627\u0642\u0639\u06cc \u0645\u06cc\u200c\u0631\u0633\u062f\u060c \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0686\u06cc\u0632 \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0635\u062d\u06cc\u062d Ref \u0648 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0627\u0637\u0631\u0627\u0641 Ref \u0627\u0633\u062a.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0627\u0645\u0631\u0648\u0632\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0647 \u0686\u0631\u0627 \u062f\u0631 \u0648\u0647\u0644\u0647 \u0627\u0648\u0644 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 DOM \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c Ref \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0622\u0646 \u06a9\u0645\u06a9 \u06a9\u0646\u062f\u060c \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f. <code>useRef<\/code>\u060c <code>forwardRef<\/code> \u0648 <code>useImperativeHandle<\/code>\u0648 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0635\u062d\u06cc\u062d \u0627\u0632 \u0622\u0646\u0647\u0627.  \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 <em>\u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0631\u062f\u0646<\/em> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <code>forwardRef<\/code> \u0648 <code>useImperativeHandle<\/code> \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0647\u0646\u0648\u0632 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0645\u06cc \u062f\u0647\u0646\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645.  \u0627\u06af\u0631 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0633\u0639\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0641\u0647\u0645\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u062e\u0648\u0627\u0647\u06cc\u062f \u0641\u0647\u0645\u06cc\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645<\/p>\n<p>\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0645\u062a\u06cc\u0627\u0632\u060c \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06af\u0631\u0641\u062a \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 API \u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc \u0631\u0627 \u062f\u0631 React \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645!<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0648\u06cc\u062f\u06cc\u0648\u06cc YouTube \u0646\u06cc\u0632 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a: \u062c\u0632\u0626\u06cc\u0627\u062a \u06a9\u0645\u062a\u0631\u06cc \u062f\u0627\u0631\u062f \u0627\u0645\u0627 \u062f\u0631 \u0639\u0648\u0636 \u0627\u0646\u06cc\u0645\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0632\u06cc\u0628\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f.  \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u062f\u0631\u06a9 \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u0627\u0632 \u06cc\u06a9 \u0627\u0646\u06cc\u0645\u06cc\u0634\u0646 3 \u062b\u0627\u0646\u06cc\u0647 \u0627\u06cc \u0622\u0633\u0627\u0646 \u062a\u0631 \u0627\u0632 \u062f\u0648 \u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641 \u0645\u062a\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0646\u0641\u0631\u0627\u0646\u0633\u06cc \u06a9\u0647 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0645\u060c \u0641\u0631\u0645 \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0645.  \u0645\u0646 \u0627\u0632 \u0645\u0631\u062f\u0645 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u0645 \u062c\u0632\u0626\u06cc\u0627\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646\u0647\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0645\u060c \u0646\u0627\u0645\u060c \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u062f\u0633\u062a\u0647 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0645\u0646 \u0628\u062f\u0647\u0646\u062f.  \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc &#8220;\u0646\u0627\u0645&#8221; \u0648 &#8220;\u0627\u06cc\u0645\u06cc\u0644&#8221; \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0627\u062c\u0628\u0627\u0631\u06cc \u06a9\u0646\u0645.  \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062d\u0627\u0634\u06cc\u0647\u200c\u0647\u0627\u06cc \u0642\u0631\u0645\u0632 \u0622\u0632\u0627\u0631\u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0627\u0637\u0631\u0627\u0641 \u0622\u0646 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645\u060c \u0648\u0642\u062a\u06cc \u0627\u0641\u0631\u0627\u062f \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u062e\u0627\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0646\u062f\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0641\u0631\u0645 \u062c\u0630\u0627\u0628 \u0628\u0627\u0634\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u062f\u0631 \u0639\u0648\u0636\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0645\u06cc\u062f\u0627\u0646 \u062e\u0627\u0644\u06cc \u0631\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u06a9\u0645\u06cc \u062a\u06a9\u0627\u0646 \u062f\u0647\u0645 \u062a\u0627 \u062a\u0648\u062c\u0647 \u0631\u0627 \u062c\u0644\u0628 \u06a9\u0646\u0645\u060c \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0633\u0631\u06af\u0631\u0645\u06cc.<\/p>\n<p>\u062d\u0627\u0644\u0627 React \u0628\u0647 \u0645\u0627 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u0645\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0645\u06cc \u062f\u0647\u062f <em>\u0647\u0645\u0647 \u0686\u064a\u0632<\/em>.  \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f &#8220;\u062a\u0645\u0631\u06a9\u0632 \u06cc\u06a9 \u0639\u0646\u0635\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc&#8221; \u0628\u062e\u0634\u06cc \u0627\u0632 \u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0622\u0646\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0632\u0646\u06af\u200c\u0632\u062f\u0647 \u0628\u0648\u0645\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a API \u062e\u0648\u062f \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u0645.  \u0648 \u0628\u0631\u0627\u06cc \u0622\u0646\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0639\u0646\u0635\u0631 DOM \u0648\u0627\u0642\u0639\u06cc \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0628\u062f\u0648\u0646 \u0648\u0627\u06a9\u0646\u0634\u060c \u0645\u0627 \u06a9\u0627\u0631\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">element<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nx\">getElementById<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">bla<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"nx\">element<\/span><span class=\"p\">.<\/span><span class=\"nx\">focus<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u0628\u0647 \u0622\u0646 \u0628\u0631\u0648\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"nx\">element<\/span><span class=\"p\">.<\/span><span class=\"nx\">scrollIntoView<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u062f\u0644\u0645\u0627\u0646 \u0628\u062e\u0648\u0627\u0647\u062f.  \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0639\u0645\u0648\u0644 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 DOM API \u0628\u0648\u0645\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc React \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<ul>\n<li>\u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc <strong>\u062a\u0645\u0631\u06a9\u0632 \u06cc\u06a9 \u0639\u0646\u0635\u0631<\/strong> \u067e\u0633 \u0627\u0632 \u0631\u0646\u062f\u0631 \u0634\u062f\u0646\u060c \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u0648\u0631\u0648\u062f\u06cc \u062f\u0631 \u06cc\u06a9 \u0641\u0631\u0645<\/li>\n<li>\u062a\u0634\u062e\u06cc\u0635 <strong>\u06cc\u06a9 \u06a9\u0644\u06cc\u06a9 \u062e\u0627\u0631\u062c \u0627\u0632 \u06cc\u06a9 \u062c\u0632\u0621<\/strong> \u0647\u0646\u06af\u0627\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0639\u0646\u0627\u0635\u0631 \u067e\u0646\u062c\u0631\u0647 \u0645\u0627\u0646\u0646\u062f<\/li>\n<li>\u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc <strong>\u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u0647 \u06cc\u06a9 \u0639\u0646\u0635\u0631<\/strong> \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0638\u0627\u0647\u0631 \u0634\u062f<\/li>\n<li>\n<strong>\u0645\u062d\u0627\u0633\u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0647\u0627 \u0648 \u0645\u0631\u0632\u0647\u0627<\/strong> \u0627\u0632 \u0627\u062c\u0632\u0627\u06cc \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0686\u06cc\u0632\u06cc \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0627\u0628\u0632\u0627\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc<\/li>\n<\/ul>\n<p>\u0648 \u0627\u06af\u0631\u0686\u0647\u060c \u0627\u0632 \u0646\u0638\u0631 \u0641\u0646\u06cc\u060c \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u0645\u0627 \u0631\u0627 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0628\u0627\u0632 \u0646\u0645\u06cc \u062f\u0627\u0631\u062f <code>getElementById<\/code> \u062d\u062a\u06cc \u0627\u0645\u0631\u0648\u0632\u0647\u060c React \u0631\u0627\u0647 \u06a9\u0645\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u062a\u0631 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0622\u0646 \u0639\u0646\u0635\u0631 \u0628\u0647 \u0645\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u0646\u062a\u0634\u0627\u0631 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627 \u062f\u0631 \u0647\u0645\u0647 \u062c\u0627 \u06cc\u0627 \u0622\u06af\u0627\u0647\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 DOM \u0627\u0633\u0627\u0633\u06cc \u0646\u062f\u0627\u0631\u062f: refs.<\/p>\n<p>Ref \u0641\u0642\u0637 \u06cc\u06a9 \u0634\u06cc\u0621 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0633\u062a\u060c \u0645\u0631\u062c\u0639\u06cc \u06a9\u0647 React \u0628\u06cc\u0646 \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f \u0628\u0647 \u0622\u0646 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.  \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 \u0647\u06cc\u0686 \u0648\u062c\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u062d\u0627\u0644\u062a \u0646\u06cc\u0633\u062a\u060c \u0633\u0639\u06cc \u0646\u06a9\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.  \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0641\u0627\u0648\u062a \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u062f\u0631 \u0627\u0633\u0646\u0627\u062f \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a <code>useRef<\/code> \u0642\u0644\u0627\u0628:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Component<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ create a ref with default value null<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">ref<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0645\u0642\u062f\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 Ref \u062f\u0631 \u0648\u06cc\u0698\u06af\u06cc &#8220;\u062c\u0627\u0631\u06cc&#8221; (\u0648 \u062a\u0646\u0647\u0627) \u0622\u0646 \u0645\u0648\u062c\u0648\u062f \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.  \u0648 \u0645\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645!  \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0634\u06cc \u0631\u0627 \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0627\u0632 \u062d\u0627\u0644\u062a \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Component<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">ref<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nx\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ re-write ref's default value with new object<\/span>\n    <span class=\"nx\">ref<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">someFunc<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{...},<\/span>\n      <span class=\"na\">someValue<\/span><span class=\"p\">:<\/span> <span class=\"nx\">stateValue<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">stateValue<\/span><span class=\"p\">])<\/span>\n\n\n  <span class=\"k\">return<\/span> <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u0645\u0647\u0645\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0627\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 Ref \u0631\u0627 \u0628\u0647 \u0647\u0631 \u0639\u0646\u0635\u0631 DOM \u0648 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u062c\u0632\u0627\u06cc React \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Component<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">ref<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"c1\">\/\/ assing ref to an input element<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">ref<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0627\u06af\u0631 \u0644\u0627\u06af\u06cc\u0646 \u06a9\u0646\u0645 <code>ref.current<\/code> \u06a9\u0647 \u062f\u0631 <code>useEffect<\/code> (\u0641\u0642\u0637 \u067e\u0633 \u0627\u0632 \u0631\u0646\u062f\u0631 \u0634\u062f\u0646 \u06cc\u06a9 \u0645\u0624\u0644\u0641\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a)\u060c \u062e\u0648\u0627\u0647\u0645 \u062f\u06cc\u062f <em>\u062f\u0642\u06cc\u0642\u0627<\/em> \u0647\u0645\u0627\u0646 \u0639\u0646\u0635\u0631\u06cc \u06a9\u0647 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645\u060c \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u0648\u0631\u0645 <code>getElementById<\/code> \u062f\u0631 \u0622\u0646 \u0648\u0631\u0648\u062f\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Component<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">ref<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nx\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ this will be a reference to input DOM element!<\/span>\n    <span class=\"c1\">\/\/ exactly the same as if I did getElementById for it<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">ref<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">ref<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0627\u06a9\u0646\u0648\u0646\u060c \u0627\u06af\u0631 \u0645\u0646 \u0641\u0631\u0645 \u062b\u0628\u062a \u0646\u0627\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062c\u0632\u0621 \u063a\u0648\u0644 \u067e\u06cc\u06a9\u0631 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0631\u062f\u0645\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u06a9\u0627\u0631\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Form<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setName<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">onSubmitClick<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">name<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ focus the input field if someone tries to submit empty name<\/span>\n      <span class=\"nx\">ref<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">.<\/span><span class=\"nx\">focus<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ submit the data here!<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;&gt;<\/span>\n    ...\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">setName<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">ref<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">onSubmitClick<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Submit the form!<span class=\"p\">&lt;\/<\/span><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">&lt;\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 ref \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0642\u062a\u06cc \u062f\u06a9\u0645\u0647 \u00absubmit\u00bb \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0627\u0644\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f \u0648 \u0627\u06af\u0631 \u0647\u0633\u062a\u0646\u062f &#8211; \u0648\u0631\u0648\u062f\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0641\u0631\u0645 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062c\u0639\u0628\u0647 \u062c\u0639\u0628\u0647 \u06a9\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p><iframe src=\"https:\/\/codesandbox.io\/embed\/giant-form-ref-example-23z9vf?view=preview\" style=\"width:100%; height:calc(300px + 8vw); border:0; border-radius: 4px; overflow:hidden;\" allow=\"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb\" loading=\"lazy\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"><br \/>\n<\/iframe>\n<\/p>\n<p>\u0641\u0642\u0637 \u062f\u0631 \u0632\u0646\u062f\u06af\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0645\u0646 \u06cc\u06a9 \u062c\u0632\u0621 \u063a\u0648\u0644 \u067e\u06cc\u06a9\u0631 \u0631\u0627 \u0628\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc \u062f\u0647\u0645.  \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f\u060c \u0645\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0622\u0646 \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647 \u062e\u0648\u062f\u0634 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0646\u0645: \u0628\u0647 \u0637\u0648\u0631\u06cc \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0631\u0645 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u060c \u0648 \u0628\u062a\u0648\u0627\u0646\u062f \u0633\u0628\u06a9\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0645\u062d\u0635\u0648\u0631 \u06a9\u0646\u062f \u0648 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u062f\u060c \u0634\u0627\u06cc\u062f \u062d\u062a\u06cc \u0628\u0631\u062e\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0627\u0646\u0646\u062f \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u0628\u0631\u0686\u0633\u0628 \u062f\u0631 \u0628\u0627\u0644\u0627 \u06cc\u0627 \u06cc\u06a9 \u0646\u0645\u0627\u062f \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">onChange<\/span><span class=\"p\">,<\/span> <span class=\"nx\">label<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;&gt;<\/span>\n    <span class=\"si\">{<\/span><span class=\"nx\">label<\/span><span class=\"si\">}<\/span><span class=\"p\">&lt;<\/span><span class=\"nt\">br<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"text\"<\/span> <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">onChange<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n  <span class=\"p\">&lt;\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627 \u0648 \u0627\u0631\u0633\u0627\u0644 \u0622\u0646 \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>Form<\/code>\u060c \u0646\u0647 \u0648\u0631\u0648\u062f\u06cc!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Form<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setName<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">onSubmitClick<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">name<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ deal with empty name<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ submit the data here!<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;&gt;<\/span>\n    ...\n    <span class=\"p\">&lt;<\/span><span class=\"nc\">InputField<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"name\"<\/span> <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">setName<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">onSubmitClick<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Submit the form!<span class=\"p\">&lt;\/<\/span><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">&lt;\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0628\u0647 \u0648\u0631\u0648\u062f\u06cc \u0628\u06af\u0648\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0645\u0624\u0644\u0641\u0647 Form &#8220;\u062e\u0648\u062f \u0631\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u062f&#8221;\u061f  \u0631\u0648\u0634 &#8220;\u0639\u0627\u062f\u06cc&#8221; \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0631\u0641\u062a\u0627\u0631 \u062f\u0631 React \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0627\u062c\u0632\u0627\u06cc \u0633\u0627\u0632\u0646\u062f\u0647 \u0648 \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u062a\u0645\u0627\u0633 \u0647\u0627 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f.  \u0645\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0633\u0639\u06cc \u06a9\u0646\u0645 \u067e\u0627\u06cc\u0647 &#8220;focusItself&#8221; \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u0645 <code>InputField<\/code> \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0633\u0648\u0626\u06cc\u0686 \u06a9\u0646\u0645 <code>false<\/code> \u0628\u0647 <code>true<\/code>\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ don't do this! just to demonstate how it could work in theory<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">onChange<\/span><span class=\"p\">,<\/span> <span class=\"nx\">focusItself<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nx\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">focusItself<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ focus input if the focusItself prop changes<\/span>\n      <span class=\"c1\">\/\/ will work only once, when false changes to true<\/span>\n      <span class=\"nx\">ref<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">.<\/span><span class=\"nx\">focus<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">focusItself<\/span><span class=\"p\">])<\/span>\n\n  <span class=\"c1\">\/\/ the rest is the same here<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u0633\u0639\u06cc \u06a9\u0646\u0645 \u0645\u0642\u062f\u0627\u0631\u06cc \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u00abonBlur\u00bb \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u06a9\u0646\u0645 <code>focusItself<\/code> \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0628\u0647 <code>false<\/code> \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0648\u0631\u0648\u062f\u06cc \u062a\u0645\u0631\u06a9\u0632 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a \u0645\u06cc \u062f\u0647\u062f\u060c \u06cc\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0628\u0648\u0644\u06cc \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u06cc\u0627 \u0631\u0627\u0647 \u062d\u0644 \u062e\u0644\u0627\u0642\u0627\u0646\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f\u060c \u0631\u0627\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.  \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0631 \u0648 \u0633\u0627\u0645\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647\u200c\u0647\u0627 \u0628\u0627\u0634\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 Ref \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062c\u0632\u0621 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 (<code>Form<\/code>\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0645\u0624\u0644\u0641\u0647 \u062f\u06cc\u06af\u0631 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u062f (<code>InputField<\/code>\u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0635\u0631 DOM \u0632\u06cc\u0631\u06cc\u0646 \u0622\u0646\u062c\u0627 \u0648\u0635\u0644 \u06a9\u0646\u06cc\u062f.  Ref \u0641\u0642\u0637 \u06cc\u06a9 \u0634\u06cc\u0621 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0633\u062a.<\/p>\n<p><code>Form<\/code>  \u0633\u067e\u0633 Ref \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0639\u0645\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Form<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ create the Ref in Form component<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 <code>InputField<\/code> \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u062f\u0627\u0631\u0627\u06cc \u067e\u0627\u06cc\u0647 \u0627\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 ref \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f \u0648 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a <code>input<\/code> \u0641\u06cc\u0644\u062f\u06cc \u06a9\u0647 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u0631\u0641 \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f.  \u0641\u0642\u0637 Ref\u060c \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062f\u0631 <code>InputField<\/code>\u060c \u0627\u0632 \u0648\u0633\u0627\u06cc\u0644 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0622\u0646\u062c\u0627 \u062e\u0648\u0627\u0647\u062f \u0622\u0645\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ the rest of the code is the same<\/span>\n\n  <span class=\"c1\">\/\/ pass ref from prop to the internal input component<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">inputRef<\/span><span class=\"si\">}<\/span> <span class=\"err\">...<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Ref \u0627\u0633\u062a <em>\u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631<\/em> \u0634\u06cc\u060c \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0648\u0642\u062a\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0639\u0646\u0635\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645\u060c React \u0632\u06cc\u0631 \u0622\u0646 \u0641\u0642\u0637 \u0622\u0646 \u0631\u0627 \u062c\u0647\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.  \u0648 \u0634\u06cc\u0626\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u062c\u0647\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f \u062f\u0631 \u0642\u0633\u0645\u062a \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f <code>Form<\/code> \u062c\u0632\u0621.  \u067e\u0633 \u0628\u0647 \u0645\u062d\u0636 \u0627\u06cc\u0646\u06a9\u0647 <code>InputField<\/code> \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0634\u06cc Ref \u062c\u0647\u0634 \u0645\u06cc \u06cc\u0627\u0628\u062f \u0648 \u0645\u0627 <code>Form<\/code> \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a <code>input<\/code> \u0639\u0646\u0635\u0631 DOM \u062f\u0631 <code>inputRef.current<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Form<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ create the Ref in Form component<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nx\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ the \"input\" element, that is rendered inside InputField, will be here<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">inputRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[]);<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"si\">{<\/span><span class=\"cm\">\/* Pass ref as prop to the input field component *\/<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">InputField<\/span> <span class=\"na\">inputRef<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">inputRef<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\">&lt;\/&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u062f\u0631 \u0627\u0631\u0633\u0627\u0644 callback \u062e\u0648\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 inputRef.current.focus()\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u06a9\u062f \u0642\u0628\u0644\u06cc \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u062b\u0627\u0644 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p><iframe src=\"https:\/\/codesandbox.io\/embed\/example2-pass-ref-as-prop-5i03u9?view=preview\" style=\"width:100%; height:calc(300px + 8vw); border:0; border-radius: 4px; overflow:hidden;\" allow=\"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb\" loading=\"lazy\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"><br \/>\n<\/iframe>\n<\/p>\n<p>\u0627\u06af\u0631 \u062a\u0639\u062c\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0645\u0646 \u0622\u0646 \u0631\u0627 \u0646\u0627\u0645 \u0628\u0631\u062f\u0645 <code>inputRef<\/code>\u060c \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0642\u0637 <code>ref<\/code>: \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0627\u062f\u06af\u06cc \u0646\u06cc\u0633\u062a. <code>ref<\/code> \u06cc\u06a9 \u062a\u06a9\u06cc\u0647 \u06af\u0627\u0647 \u0648\u0627\u0642\u0639\u06cc \u0646\u06cc\u0633\u062a\u060c \u0628\u0647 \u0646\u0648\u0639\u06cc \u06cc\u06a9 \u0646\u0627\u0645 &#8220;\u0645\u062d\u0641\u0648\u0638&#8221; \u0627\u0633\u062a.  \u062f\u0631 \u0632\u0645\u0627\u0646 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0627 \u0647\u0646\u0648\u0632 \u062f\u0631 \u062d\u0627\u0644 \u0646\u0648\u0634\u062a\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0627\u06cc \u06a9\u0644\u0627\u0633 \u0628\u0648\u062f\u06cc\u0645\u060c \u0627\u06af\u0631 ref \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u062c\u0632\u0621 \u06a9\u0644\u0627\u0633 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u06a9\u0631\u062f\u06cc\u0645\u060c \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0645\u06cc \u0634\u062f <code>.current<\/code> \u0627\u0631\u0632\u0634 \u0622\u0646 Ref.<\/p>\n<p>\u0627\u0645\u0627 \u0627\u062c\u0632\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0646\u0645\u0648\u0646\u0647 \u0646\u062f\u0627\u0631\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u062f\u0631 \u0639\u0648\u0636\u060c \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0647\u0634\u062f\u0627\u0631 \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645: \u00ab\u0627\u062c\u0632\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 refs \u062f\u0627\u062f.  \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0631\u062c\u0639 \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.  \u0622\u06cc\u0627 \u0645\u0646\u0638\u0648\u0631 \u0634\u0645\u0627 \u0627\u0632 React.forwardRef() \u0628\u0648\u062f\u061f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Form<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"c1\">\/\/ if we just do this, we'll get a warning in console<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">InputField<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">inputRef<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 React \u0633\u06cc\u06af\u0646\u0627\u0644 \u0628\u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a <code>ref<\/code> \u062f\u0631 \u0648\u0627\u0642\u0639 \u0639\u0645\u062f\u06cc \u0627\u0633\u062a\u060c \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0627 \u0622\u0646 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.  \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06a9\u0645\u06a9 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 <code>forwardRef<\/code> \u062a\u0627\u0628\u0639: \u0645\u0624\u0644\u0641\u0647 \u0648 \u0645\u0627 \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f <em>\u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc \u06a9\u0646\u062f<\/em> \u062f\u0627\u0648\u0631 \u0627\u0632 <code>ref<\/code> \u0648\u06cc\u0698\u06af\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062f\u0648\u0645 \u062a\u0627\u0628\u0639 \u0645\u0624\u0644\u0641\u0647.  \u062f\u0631\u0633\u062a \u0628\u0639\u062f \u0627\u0632 \u0648\u0633\u0627\u06cc\u0644<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ normally, we'd have only props there<\/span>\n<span class=\"c1\">\/\/ but we wrapped the component's function with forwardRef<\/span>\n<span class=\"c1\">\/\/ which injects the second argument - ref<\/span>\n<span class=\"c1\">\/\/ if it's passed to this component by its consumer<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">forwardRef<\/span><span class=\"p\">((<\/span><span class=\"nx\">props<\/span><span class=\"p\">,<\/span> <span class=\"nx\">ref<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ the rest of the code is the same<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">ref<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">})<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06a9\u062f \u0628\u0627\u0644\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0628\u0647\u062a\u0631 \u0628\u0647 \u062f\u0648 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">InputFieldWithRef<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">props<\/span><span class=\"p\">,<\/span> <span class=\"nx\">ref<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ the rest is the same<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ this one will be used by the form<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">forwardRef<\/span><span class=\"p\">(<\/span><span class=\"nx\">InputFieldWithRef<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u062d\u0627\u0644\u0627 <code>Form<\/code> \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0641\u0631\u0646\u0633 \u0631\u0627 \u0628\u0647 <code>InputField<\/code> \u062c\u0632\u0621 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0639\u0646\u0635\u0631 DOM \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">InputField<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">inputRef<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>forwardRef<\/code> \u06cc\u0627 \u0641\u0642\u0637 \u067e\u0627\u0633 \u06a9\u0631\u062f\u0646 ref \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u067e\u0627\u06cc\u0647 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u0633\u0644\u06cc\u0642\u0647 \u0634\u062e\u0635\u06cc \u0627\u0633\u062a: \u0646\u062a\u06cc\u062c\u0647 \u0646\u0647\u0627\u06cc\u06cc \u06cc\u06a9\u0633\u0627\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u062b\u0627\u0644 \u0632\u0646\u062f\u0647 \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n<p><iframe src=\"https:\/\/codesandbox.io\/embed\/example3-pass-ref-with-forwardref-eg30h5?view=preview\" style=\"width:100%; height:calc(300px + 8vw); border:0; border-radius: 4px; overflow:hidden;\" allow=\"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb\" loading=\"lazy\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"><br \/>\n<\/iframe>\n<\/p>\n<p>\u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628\u060c \u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0648\u0631\u0648\u062f\u06cc \u0627\u0632 <code>Form<\/code> \u062c\u0632\u0621 \u0645\u0631\u062a\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0646\u0648\u0639\u06cc.  \u0627\u0645\u0627 \u0645\u0627 \u0628\u0647 \u0647\u06cc\u0686 \u0648\u062c\u0647 \u0628\u0627 \u0641\u0631\u0645 \u062e\u0648\u0628 \u062e\u0648\u062f\u0645\u0627\u0646 \u062a\u0645\u0627\u0645 \u0646\u0634\u062f\u0647 \u0627\u06cc\u0645.  \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u0648\u0632 \u062e\u0637\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062a\u0645\u0631\u06a9\u0632\u060c \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u062a\u06a9\u0627\u0646 \u062f\u0647\u06cc\u0645\u061f  \u0686\u0646\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f <code>element.shake()<\/code> \u062f\u0631 API \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0648\u0645\u06cc\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0639\u0646\u0635\u0631 DOM \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u0645\u06a9\u06cc \u0646\u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f \ud83d\ude22<\/p>\n<p>\u0645\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0646\u06cc\u0645\u06cc\u0634\u0646 CSS \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ store whether we should shake or not in state<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">shouldShake<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setShouldShake<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">false<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"c1\">\/\/ just add the classname when it's time to shake it - css will handle it<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">className<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">shouldShake<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">shake-animation<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">''<\/span><span class=\"p\">;<\/span>\n\n  <span class=\"c1\">\/\/ when animation is done - transition state back to false, so we can start again if needed<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">className<\/span><span class=\"si\">}<\/span> <span class=\"na\">onAnimationEnd<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">setShouldShake<\/span><span class=\"p\">(<\/span><span class=\"kc\">false<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u0686\u06af\u0648\u0646\u0647 \u0622\u0646 \u0631\u0627 \u062a\u062d\u0631\u06cc\u06a9 \u06a9\u0646\u06cc\u0645\u061f  \u0628\u0627\u0632 \u0647\u0645\u060c \u0647\u0645\u0627\u0646 \u062f\u0627\u0633\u062a\u0627\u0646 \u0642\u0628\u0644\u06cc \u0628\u0627 \u062a\u0645\u0631\u06a9\u0632 &#8211; \u0645\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0644\u0648\u0627\u0632\u0645 \u062c\u0627\u0646\u0628\u06cc \u0631\u0627\u0647\u200c\u062d\u0644 \u062e\u0644\u0627\u0642\u0627\u0646\u0647\u200c\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645\u060c \u0627\u0645\u0627 \u0639\u062c\u06cc\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u0648 \u0628\u0647 \u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0641\u0631\u0645 \u0631\u0627 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0627 \u0641\u0648\u06a9\u0648\u0633 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 ref \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u062f\u0648 \u0631\u0627\u0647 \u062d\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.  \u0627\u06af\u0631 \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645 <code>InputField.shake()<\/code> \u0648 <code>InputField.focus()<\/code> \u0627\u06cc\u0646\u062c\u0627!<\/p>\n<p>\u0648 \u0635\u062d\u0628\u062a \u0627\u0632 \u062a\u0645\u0631\u06a9\u0632 &#8211; \u0686\u0631\u0627 \u0645\u0646 <code>Form<\/code> \u0645\u0624\u0644\u0641\u0647 \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f \u0628\u0627 DOM API \u0628\u0648\u0645\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0622\u0646 \u0645\u0642\u0627\u0628\u0644\u0647 \u06a9\u0646\u062f\u061f  \u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648 \u062a\u0645\u0627\u0645 \u0647\u062f\u0641 \u0646\u06cc\u0633\u062a <code>InputField<\/code>\u060c \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0632\u0627\u0639 \u0627\u0632 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0647\u0627 \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646\u061f  \u0686\u0631\u0627 \u0641\u0631\u0645 \u062d\u062a\u06cc \u0628\u0647 \u0639\u0646\u0635\u0631 DOM \u0627\u0633\u0627\u0633\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f &#8211; \u0627\u0633\u0627\u0633\u0627\u064b \u062c\u0632\u0626\u06cc\u0627\u062a \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062e\u0644\u06cc \u0631\u0627 \u0641\u0627\u0634 \u0645\u06cc \u06a9\u0646\u062f.  \u0631\u0627 <code>Form<\/code> \u062c\u0632\u0621 \u0646\u0628\u0627\u06cc\u062f \u0627\u0647\u0645\u06cc\u062a\u06cc \u0628\u062f\u0647\u062f \u06a9\u0647 \u0627\u0632 \u06a9\u062f\u0627\u0645 \u0639\u0646\u0635\u0631 DOM \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06cc\u0627 \u0627\u0635\u0644\u0627\u064b \u0627\u0632 \u0639\u0646\u0627\u0635\u0631 DOM \u06cc\u0627 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.  \u062a\u0641\u06a9\u06cc\u06a9 \u0646\u06af\u0631\u0627\u0646\u06cc \u0647\u0627\u060c \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 API \u0636\u0631\u0648\u0631\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 <code>InputField<\/code> \u062c\u0632\u0621.  \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c React \u0627\u0639\u0644\u0627\u0645\u06cc \u0627\u0633\u062a \u0648 \u0627\u0632 \u0647\u0645\u0647 \u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u062f \u06a9\u0647 \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645.  \u0627\u0645\u0627 \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u0631\u0627\u0647\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0636\u0631\u0648\u0631\u06cc \u0686\u06cc\u0632\u06cc \u0631\u0627 \u062a\u062d\u0631\u06cc\u06a9 \u06a9\u0646\u06cc\u0645.  \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b React \u06cc\u06a9 \u062f\u0631\u06cc\u0686\u0647 \u0641\u0631\u0627\u0631 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0628\u0647 \u0645\u0627 \u0645\u06cc \u062f\u0647\u062f: useImperativeHandle hook.<\/p>\n<p>\u062f\u0631\u06a9 \u0627\u06cc\u0646 \u0642\u0644\u0627\u0628 \u06a9\u0645\u06cc \u06af\u06cc\u062c \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u0646 \u0645\u062c\u0628\u0648\u0631 \u0634\u062f\u0645 \u062f\u0648 \u0628\u0627\u0631 \u0627\u0633\u0646\u0627\u062f \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u0645\u060c \u0686\u0646\u062f \u0628\u0627\u0631 \u0622\u0646 \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u0645 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06a9\u062f \u0648\u0627\u0642\u0639\u06cc React \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645 \u062a\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u067e\u06cc \u0628\u0628\u0631\u0645.  \u0627\u0645\u0627 \u0627\u0633\u0627\u0633\u0627\u064b \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u062f\u0648 \u0686\u06cc\u0632 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645: \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 API \u0636\u0631\u0648\u0631\u06cc \u0645\u0627 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627\u0634\u062f \u0648 \u06cc\u06a9 Ref \u0628\u0631\u0627\u06cc \u067e\u06cc\u0648\u0633\u062a \u06a9\u0631\u062f\u0646 \u0622\u0646.  \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc \u0645\u0627\u060c \u0633\u0627\u062f\u0647 \u0627\u0633\u062a: \u0645\u0627 \u0641\u0642\u0637 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>.focus()<\/code> \u0648 <code>.shake()<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 API \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0648 \u0645\u0627 \u0627\u0632 \u0642\u0628\u0644 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f refs \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ this is how our API could look like<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">InputFieldAPI<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">focus<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ do the focus here magic<\/span>\n  <span class=\"p\">},<\/span>\n  <span class=\"na\">shake<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ trigger shake here<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>useImperativeHandle<\/code> hook \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0634\u06cc \u0631\u0627 \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc &#8220;current&#8221; \u0622\u0628\u062c\u06a9\u062a Ref \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0647\u0645\u06cc\u0646.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n\n  <span class=\"nx\">useImperativeHandle<\/span><span class=\"p\">(<\/span><span class=\"nx\">someRef<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span>\n    <span class=\"na\">focus<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{},<\/span>\n    <span class=\"na\">shake<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{},<\/span>\n  <span class=\"p\">}),<\/span> <span class=\"p\">[])<\/span>\n\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 &#8211; Ref \u0645\u0627 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u0627 \u062f\u0631 \u062e\u0648\u062f \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0632 props \u06cc\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 forwardRef \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f.  \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062f\u0648\u0645 \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0634\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f &#8211; \u0627\u06cc\u0646 \u0634\u06cc\u0626\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>inputRef.current<\/code>.  \u0648 \u0633\u0648\u0645\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0622\u0631\u0627\u06cc\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0627\u0633\u062a\u060c \u0645\u0627\u0646\u0646\u062f \u0647\u0631 \u0647\u0648\u06a9 React \u062f\u06cc\u06af\u0631\u06cc.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0645\u0627\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f ref \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0635\u0631\u06cc\u062d \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645 <code>apiRef<\/code> \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc  \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc API \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0622\u0646 \u0645\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u0631\u062c\u0639 \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 &#8211; \u0627\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0627\u062e\u0644\u06cc <code>InputField<\/code>\u060c \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0647 <code>input<\/code> \u0639\u0646\u0635\u0631 DOM \u0648 \u062a\u0645\u0631\u06a9\u0632 \u0645\u0627\u0634\u0647 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ pass the Ref that we'll use as our imperative API as a prop<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">apiRef<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ create another ref - internal to Input component<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"c1\">\/\/ \"merge\" our API into the apiRef<\/span>\n  <span class=\"c1\">\/\/ the returned object will be available for use as apiRef.current<\/span>\n  <span class=\"nx\">useImperativeHandle<\/span><span class=\"p\">(<\/span><span class=\"nx\">apiRef<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span>\n    <span class=\"na\">focus<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ just trigger focus on internal ref that is attached to the DOM object<\/span>\n      <span class=\"nx\">inputRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">.<\/span><span class=\"nx\">focus<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">},<\/span>\n    <span class=\"na\">shake<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{},<\/span>\n  <span class=\"p\">}),<\/span> <span class=\"p\">[])<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">inputRef<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0628\u0631\u0627\u06cc &#8220;\u062a\u06a9\u0627\u0646&#8221; \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062d\u0627\u0644\u062a \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ pass the Ref that we'll use as our imperative API as a prop<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">apiRef<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ remember our state for shaking?<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">shouldShake<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setShouldShake<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">false<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nx\">useImperativeHandle<\/span><span class=\"p\">(<\/span><span class=\"nx\">apiRef<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span>\n    <span class=\"na\">focus<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{},<\/span>\n    <span class=\"na\">shake<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ trigger state update here<\/span>\n      <span class=\"nx\">setShouldShake<\/span><span class=\"p\">(<\/span><span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">},<\/span>\n  <span class=\"p\">}),<\/span> <span class=\"p\">[])<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0628\u0648\u0645!  \u0645\u0627 <code>Form<\/code> \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f <code>ref<\/code>\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 <code>InputField<\/code> \u0648 \u0642\u0627\u062f\u0631 \u0628\u0647 \u0627\u0646\u062c\u0627\u0645 \u0633\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>inputRef.current.focus()<\/code> \u0648 <code>inputRef.current.shake()<\/code>\u060c \u0628\u062f\u0648\u0646 \u0646\u06af\u0631\u0627\u0646\u06cc \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0622\u0646\u0647\u0627!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Form<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">inputRef<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setName<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">onSubmitClick<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">name<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ focus the input if the name is empty<\/span>\n      <span class=\"nx\">inputRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">.<\/span><span class=\"nx\">focus<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ and shake it off!<\/span>\n      <span class=\"nx\">inputRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">.<\/span><span class=\"nx\">shake<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ submit the data here!<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;&gt;<\/span>\n    ...\n    <span class=\"p\">&lt;<\/span><span class=\"nc\">InputField<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"name\"<\/span> <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">setName<\/span><span class=\"si\">}<\/span> <span class=\"na\">apiRef<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">inputRef<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">onSubmitClick<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Submit the form!<span class=\"p\">&lt;\/<\/span><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">&lt;\/&gt;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0645\u062b\u0627\u0644 \u0641\u0631\u0645 \u06a9\u0627\u0631 \u06a9\u0627\u0645\u0644 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p><iframe src=\"https:\/\/codesandbox.io\/embed\/example4-imperative-api-with-useimperativehandle-v5hdsm?view=preview\" style=\"width:100%; height:calc(300px + 8vw); border:0; border-radius: 4px; overflow:hidden;\" allow=\"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb\" loading=\"lazy\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"><br \/>\n<\/iframe>\n<\/p>\n<p>\u0627\u06af\u0631 <code>useImperativeHandle<\/code> \u0642\u0644\u0627\u0628 \u0647\u0645\u0686\u0646\u0627\u0646 \u0686\u0634\u0645 \u0634\u0645\u0627 \u0631\u0627 \u062a\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f &#8211; \u0646\u06af\u0631\u0627\u0646 \u0646\u0628\u0627\u0634\u06cc\u062f\u060c \u0686\u0634\u0645 \u0645\u0646 \u0647\u0645 \u062a\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062e\u0648\u0631\u062f!  \u0627\u0645\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0645\u062c\u0628\u0648\u0631 \u0646\u06cc\u0633\u062a\u06cc\u0645 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u0648\u0631\u0647\u0627 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0627\u06cc\u0646 \u0648\u0627\u0642\u0639\u06cc\u062a \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0634\u06cc\u0621 API \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u0645 <code>ref.current<\/code> \u0627\u0632 Ref \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632\u060c \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">InputField<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">apiRef<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">apiRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">focus<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{},<\/span>\n      <span class=\"na\">shake<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{},<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">apiRef<\/span><span class=\"p\">])<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a <code>useImperativeHandle<\/code> \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0632\u06cc\u0631 \u06a9\u0627\u067e\u0648\u062a \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f.  \u0648 \u062f\u0642\u06cc\u0642\u0627 \u0645\u062b\u0644 \u0642\u0628\u0644 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062f\u0631 \u062d\u0642\u06cc\u0642\u062a\u060c <code>useLayoutEffect<\/code> \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u06cc\u0646\u062c\u0627 \u062d\u062a\u06cc \u0628\u0647\u062a\u0631 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u0644\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0633\u062a.  \u0641\u0639\u0644\u0627 \u0628\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0633\u0646\u062a\u06cc <code>useEffect<\/code>.<\/p>\n<p>\u0646\u0645\u0648\u0646\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n<p><iframe src=\"https:\/\/codesandbox.io\/embed\/example5-imperative-api-without-useimperativehandle-yjyxd0?view=preview\" style=\"width:100%; height:calc(300px + 8vw); border:0; border-radius: 4px; overflow:hidden;\" allow=\"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb\" loading=\"lazy\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"><br \/>\n<\/iframe>\n<\/p>\n<hr\/>\n<p>\u0628\u0644\u0647\u060c \u06cc\u06a9 \u0641\u0631\u0645 \u0628\u0627\u062d\u0627\u0644 \u0628\u0627 \u062c\u0644\u0648\u0647 \u062a\u06a9\u0627\u0646 \u062f\u0627\u062f\u0646 \u062e\u0648\u0628 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a\u060c React refs \u062f\u06cc\u06af\u0631 \u06cc\u06a9 \u0631\u0627\u0632 \u0646\u06cc\u0633\u062a\u060c \u0648 API \u0636\u0631\u0648\u0631\u06cc \u062f\u0631 React \u062f\u0631 \u0648\u0627\u0642\u0639 \u06cc\u06a9 \u0686\u06cc\u0632 \u0627\u0633\u062a.  \u0686\u0642\u062f\u0631 \u0628\u0627\u062d\u0627\u0644\u0647\u061f<\/p>\n<p>\u0641\u0642\u0637 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f: Refs \u06cc\u06a9 &#8220;\u062f\u0631\u06cc\u0686\u0647 \u0641\u0631\u0627\u0631&#8221; \u0627\u0633\u062a\u060c \u0627\u06cc\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u0648\u0636\u0639\u06cc\u062a \u06cc\u0627 \u0639\u0627\u062f\u06cc \u062c\u0631\u06cc\u0627\u0646 \u062f\u0627\u062f\u0647 React \u0628\u0627 props \u0648 callbacks \u0646\u06cc\u0633\u062a.  \u0641\u0642\u0637 \u0632\u0645\u0627\u0646\u06cc \u0627\u0632 \u0622\u0646\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0647\u06cc\u0686 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 &#8220;\u0639\u0627\u062f\u06cc&#8221; \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.  \u0647\u0645\u0627\u0646 \u0631\u0648\u0634 \u0636\u0631\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0686\u06cc\u0632\u06cc &#8211; \u0627\u062d\u062a\u0645\u0627\u0644 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062c\u0631\u06cc\u0627\u0646 \u0644\u0648\u0627\u0632\u0645 \/ \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u062f\u0627\u0646\u0634 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u0648\u062a\u06cc\u0648\u0628 \u062a\u0645\u0627\u0634\u0627 \u06a9\u0646\u06cc\u062f \ud83d\ude09<\/p>\n<hr\/>\n<p>\u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 https:\/\/www.developerway.com \u0645\u0646\u062a\u0634\u0631 \u0634\u062f.  \u0627\u06cc\u0646 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0642\u0627\u0644\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0628\u06cc\u0644 \u062f\u0627\u0631\u062f \ud83d\ude09<\/p>\n<p>\u0645\u0634\u062a\u0631\u06a9 \u0634\u062f\u0646 \u062f\u0631 \u062e\u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0627\u062a\u0635\u0627\u0644 \u062f\u0631 \u0644\u06cc\u0646\u06a9\u062f\u06cc\u0646 \u06cc\u0627 <a href=\"https:\/\/twitter.com\/adevnadia\" rel=\"nofollow noopener\" target=\"_blank\">\u062f\u0631 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062f\u0646\u0628\u0627\u0644\u0634 \u06a9\u0646<\/a> \u0628\u0647 \u0645\u062d\u0636 \u0627\u0646\u062a\u0634\u0627\u0631 \u0645\u0642\u0627\u0644\u0647 \u0628\u0639\u062f\u06cc \u0645\u0637\u0644\u0639 \u0634\u0648\u06cc\u062f.<\/p>\n<\/p><\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 https:\/\/www.developerway.com \u0645\u0646\u062a\u0634\u0631 \u0634\u062f. \u0627\u06cc\u0646 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0642\u0627\u0644\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0628\u06cc\u0644 \u062f\u0627\u0631\u062f \ud83d\ude09 \u06cc\u06a9\u06cc \u0627\u0632 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0632\u06cc\u0628\u0627\u06cc React \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0628\u0631\u062e\u0648\u0631\u062f \u0628\u0627 DOM \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f. \u0627\u06a9\u0646\u0648\u0646\u060c \u0628\u0647\u200c\u062c\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u06cc \u062f\u0633\u062a\u06cc \u0639\u0646\u0627\u0635\u0631\u060c \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0646 \u062f\u0631\u0628\u0627\u0631\u0647 \u0646\u062d\u0648\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0628\u0647 \u0622\u0646 \u0639\u0646\u0627\u0635\u0631\u060c \u06cc\u0627 \u0645\u0628\u0627\u0631\u0632\u0647 \u0628\u0627 \u0646\u0627\u0647\u0645\u0627\u0647\u0646\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u0631\u0648\u0631\u06af\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0641\u0642\u0637 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-15763","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/15763","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=15763"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/15763\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=15763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=15763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=15763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}