{"id":6678,"date":"2026-07-21T11:00:43","date_gmt":"2026-07-21T07:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6678"},"modified":"2026-07-21T11:00:43","modified_gmt":"2026-07-21T07:30:43","slug":"%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-state-%d8%af%d8%b1-%da%a9%d8%a7%d9%85%d9%be%d9%88%d9%86%d9%86%d8%aa%d9%87%d8%a7%db%8c-%da%a9%d9%84%d8%a7%d8%b3%db%8c-%d8%b1%db%8c%d8%a7%da%a9","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-state-%d8%af%d8%b1-%da%a9%d8%a7%d9%85%d9%be%d9%88%d9%86%d9%86%d8%aa%d9%87%d8%a7%db%8c-%da%a9%d9%84%d8%a7%d8%b3%db%8c-%d8%b1%db%8c%d8%a7%da%a9\/","title":{"rendered":"\u0645\u062f\u06cc\u0631\u06cc\u062a State \u062f\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a (React Class Components)"},"content":{"rendered":"<p data-path-to-node=\"3\">\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a (React)\u060c \u0645\u0641\u0647\u0648\u0645 <b data-path-to-node=\"3\" data-index-in-node=\"31\">State<\/b> \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0648 \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u062a\u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d State \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0644\u06cc\u062f\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0648\u0628\u200c\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0648 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u0633\u062a\u061b \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627\u06cc \u06cc\u06a9 \u0641\u0631\u0645 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0627\u0632 API.<\/p>\n<blockquote data-path-to-node=\"4\">\n<p data-path-to-node=\"4,0\"><b data-path-to-node=\"4,0\" data-index-in-node=\"0\">\u0646\u06a9\u062a\u0647:<\/b> \u0627\u06af\u0631\u0686\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <b data-path-to-node=\"4,0\" data-index-in-node=\"43\">React Hooks<\/b> \u0648 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u062a\u0627\u0628\u0639\u06cc (Functional Components) \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u062c\u062f\u06cc\u062f \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631\u06a9 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a State \u062f\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u0647\u0645\u06cc\u062a \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u062f\u0627\u0646\u0634 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u062f\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 (Legacy Code) \u0631\u0627 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u062e\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 \u0645\u0627\u0646\u0646\u062f <code data-path-to-node=\"4,0\" data-index-in-node=\"329\">componentDidCatch<\/code> (\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627) \u062a\u0646\u0647\u0627 \u062f\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0646\u062f.<\/p>\n<\/blockquote>\n<p data-path-to-node=\"5\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 State \u0631\u0627 \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062b\u0627\u0628\u062a (Static) \u0648 \u0645\u062a\u063a\u06cc\u0631 (\u0628\u0631 \u0627\u0633\u0627\u0633 State \u0642\u0628\u0644\u06cc) \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0648 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631\u060c \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0633\u0627\u062f\u0647 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0633\u0628\u062f \u062e\u0631\u06cc\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u0633\u0627\u062e\u062a.<\/p>\n<h2 data-path-to-node=\"7\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n<p data-path-to-node=\"8\">\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul data-path-to-node=\"9\">\n<li>\n<p data-path-to-node=\"9,0,0\"><b data-path-to-node=\"9,0,0\" data-index-in-node=\"0\">Node.js \u0648 npm:<\/b> \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 \u0646\u0633\u062e\u0647 \u0645\u062f\u0631\u0646 Node.js (\u0646\u0633\u062e\u0647 LTS \u0645\u0627\u0646\u0646\u062f v18 \u06cc\u0627 v20) \u0648 npm \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"9,1,0\"><b data-path-to-node=\"9,1,0\" data-index-in-node=\"0\">\u0622\u0634\u0646\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 JavaScript (ES6)\u060c HTML \u0648 CSS.<\/b><\/p>\n<\/li>\n<\/ul>\n<h2 data-path-to-node=\"11\">\u06af\u0627\u0645 \u06f1 \u2014 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/h2>\n<p data-path-to-node=\"12\">\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f \u0631\u06cc\u200c\u0627\u06a9\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u06a9\u062f\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0631\u0627 \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-path-to-node=\"13\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-107 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQmAE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-107\">\n<div class=\"animated-opacity ng-tns-c427156625-107\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-107 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-107\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-107 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-107\"><code class=\"code-container formatted ng-tns-c427156625-107\" role=\"text\" data-test-id=\"code-content\">npx create-react-app state-class-tutorial\r\n<span class=\"hljs-built_in\">cd<\/span> state-class-tutorial\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"15\">\u062a\u0646\u0638\u06cc\u0645 registry \u067e\u06a9\u06cc\u062c \u0645\u0646\u06cc\u062c\u0631 npm (\u0648\u06cc\u0698\u0647 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f)<\/h3>\n<p data-path-to-node=\"16\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u062f\u0627\u0646\u0644\u0648\u062f \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0648 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u062a\u062d\u0631\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 \u0631\u0633\u0645\u06cc <b data-path-to-node=\"16\" data-index-in-node=\"83\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/b> \u0628\u0631\u0627\u06cc npm \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-108 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQmQE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-108\">\n<div class=\"animated-opacity ng-tns-c427156625-108\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-108 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-108\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-108 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-108\"><code class=\"code-container formatted ng-tns-c427156625-108\" role=\"text\" data-test-id=\"code-content\">npm config <span class=\"hljs-built_in\">set<\/span> registry https:\/\/npm.parmincloud.ir\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"18\">\u0633\u067e\u0633 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-109 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQmgE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-109\">\n<div class=\"animated-opacity ng-tns-c427156625-109\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-109 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-109\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-109 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-109\"><code class=\"code-container formatted ng-tns-c427156625-109\" role=\"text\" data-test-id=\"code-content\">npm start\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"20\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u0622\u062f\u0631\u0633 <code data-path-to-node=\"20\" data-index-in-node=\"16\">http:\/\/localhost:3000<\/code> \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h3 data-path-to-node=\"21\">\u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u062f\u0647\u0627\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636<\/h3>\n<p data-path-to-node=\"22\">\u06f1. \u0641\u0627\u06cc\u0644 <code data-path-to-node=\"22\" data-index-in-node=\"8\">src\/App.js<\/code> \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06a9\u062f \u0632\u06cc\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-110 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQmwE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-110\">\n<div class=\"animated-opacity ng-tns-c427156625-110\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-110 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-110\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-110 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-110\"><code class=\"code-container formatted ng-tns-c427156625-110\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> React <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'.\/App.css'<\/span>;\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">App<\/span>() <\/span>{\r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"xml\"><span class=\"hljs-tag\">&lt;&gt;<\/span><span class=\"hljs-tag\">&lt;\/&gt;<\/span><\/span>;\r\n}\r\n\r\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> App;\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"24\">\u06f2. \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-111 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQnAE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-111\">\n<div class=\"animated-opacity ng-tns-c427156625-111\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-111 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-111\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-111 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-111\"><code class=\"code-container formatted ng-tns-c427156625-111\" role=\"text\" data-test-id=\"code-content\">rm src\/logo.svg\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"26\">\u06f3. \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u0645\u0646\u0638\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-112 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQnQE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-112\">\n<div class=\"animated-opacity ng-tns-c427156625-112\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-112 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-112\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-112 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-112\"><code class=\"code-container formatted ng-tns-c427156625-112\" role=\"text\" data-test-id=\"code-content\">mkdir -p src\/components\/App\r\nmv src\/App.* src\/components\/App\/\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"28\">\u06f4. \u0645\u0633\u06cc\u0631 import \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code data-path-to-node=\"28\" data-index-in-node=\"26\">src\/index.js<\/code> \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-113 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQngE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-113\">\n<div class=\"animated-opacity ng-tns-c427156625-113\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-113 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-113\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-113 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-113\"><code class=\"code-container formatted ng-tns-c427156625-113\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> React <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> ReactDOM <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react-dom\/client'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'.\/index.css'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> App <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'.\/components\/App\/App'<\/span>;\r\n\r\n<span class=\"hljs-keyword\">const<\/span> root = ReactDOM.createRoot(<span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'root'<\/span>));\r\nroot.render(\r\n  <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">React.StrictMode<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">App<\/span> \/&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">React.StrictMode<\/span>&gt;<\/span><\/span>\r\n);\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 data-path-to-node=\"31\">\u06af\u0627\u0645 \u06f2 \u2014 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 State \u062f\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a<\/h2>\n<p data-path-to-node=\"32\">\u062d\u0627\u0644\u0627 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0645\u062d\u0635\u0648\u0644 (Product) \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0648\u0644\u06cc\u0647 \u0633\u0628\u062f \u062e\u0631\u06cc\u062f \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u0645.<\/p>\n<p data-path-to-node=\"33\">\u067e\u0648\u0634\u0647 \u0648 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-114 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQnwE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-114\">\n<div class=\"animated-opacity ng-tns-c427156625-114\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-114 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-114\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-114 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-114\"><code class=\"code-container formatted ng-tns-c427156625-114\" role=\"text\" data-test-id=\"code-content\">mkdir -p src\/components\/Product\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"35\">\u0641\u0627\u06cc\u0644 <code data-path-to-node=\"35\" data-index-in-node=\"5\">src\/components\/Product\/Product.js<\/code> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-115 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQoAE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-115\">\n<div class=\"animated-opacity ng-tns-c427156625-115\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-115 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-115\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-115 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-115\"><code class=\"code-container formatted ng-tns-c427156625-115\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> React, { Component } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'.\/Product.css'<\/span>;\r\n\r\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Product<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Component<\/span> <\/span>{\r\n  <span class=\"hljs-comment\">\/\/ \u062a\u0639\u0631\u06cc\u0641 State \u0627\u0648\u0644\u06cc\u0647<\/span>\r\n  state = {\r\n    <span class=\"hljs-attr\">cart<\/span>: [],\r\n    <span class=\"hljs-attr\">total<\/span>: <span class=\"hljs-number\">0<\/span>\r\n  }\r\n\r\n  currencyOptions = {\r\n    <span class=\"hljs-attr\">minimumFractionDigits<\/span>: <span class=\"hljs-number\">2<\/span>,\r\n    <span class=\"hljs-attr\">maximumFractionDigits<\/span>: <span class=\"hljs-number\">2<\/span>,\r\n  }\r\n\r\n  <span class=\"hljs-comment\">\/\/ \u0645\u062a\u062f\u06cc \u0628\u0631\u0627\u06cc \u0641\u0631\u0645\u062a\u200c\u062f\u0647\u06cc \u0642\u06cc\u0645\u062a<\/span>\r\n  getTotal = <span class=\"hljs-function\">() =&gt;<\/span> {\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-built_in\">this<\/span>.state.total.toLocaleString(<span class=\"hljs-literal\">undefined<\/span>, <span class=\"hljs-built_in\">this<\/span>.currencyOptions);\r\n  }\r\n\r\n  <span class=\"hljs-function\"><span class=\"hljs-title\">render<\/span>()<\/span> {\r\n    <span class=\"hljs-keyword\">return<\/span> (\r\n      <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"wrapper\"<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n          \u0633\u0628\u062f \u062e\u0631\u06cc\u062f: {this.state.cart.length} \u0622\u06cc\u062a\u0645\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\u0645\u062c\u0645\u0648\u0639 \u0642\u06cc\u0645\u062a: {this.getTotal()} \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"product\"<\/span>&gt;<\/span>\r\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">role<\/span>=<span class=\"hljs-string\">\"img\"<\/span> <span class=\"hljs-attr\">aria-label<\/span>=<span class=\"hljs-string\">\"ice cream\"<\/span>&gt;<\/span>\ud83c\udf66<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span>&gt;<\/span>\u0627\u0641\u0632\u0648\u062f\u0646<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span>&gt;<\/span>\u062d\u0630\u0641<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\r\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/span>\r\n    );\r\n  }\r\n}\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"37\">\u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062f\u0631 <code data-path-to-node=\"37\" data-index-in-node=\"23\">src\/components\/Product\/Product.css<\/code> \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-116 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQoQE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-116\">\n<div class=\"animated-opacity ng-tns-c427156625-116\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-116 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-116\">CSS<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-116 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-116\"><code class=\"code-container formatted ng-tns-c427156625-116\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-selector-class\">.product<\/span> <span class=\"hljs-selector-tag\">span<\/span> {\r\n    <span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">100px<\/span>;\r\n}\r\n\r\n<span class=\"hljs-selector-class\">.wrapper<\/span> {\r\n    <span class=\"hljs-attribute\">padding<\/span>: <span class=\"hljs-number\">20px<\/span>;\r\n    <span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">20px<\/span>;\r\n    <span class=\"hljs-attribute\">direction<\/span>: rtl;\r\n    <span class=\"hljs-attribute\">text-align<\/span>: right;\r\n}\r\n\r\n<span class=\"hljs-selector-class\">.wrapper<\/span> <span class=\"hljs-selector-tag\">button<\/span> {\r\n    <span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">18px<\/span>;\r\n    <span class=\"hljs-attribute\">margin<\/span>: <span class=\"hljs-number\">5px<\/span>;\r\n    <span class=\"hljs-attribute\">padding<\/span>: <span class=\"hljs-number\">5px<\/span> <span class=\"hljs-number\">15px<\/span>;\r\n    <span class=\"hljs-attribute\">background<\/span>: none;\r\n    <span class=\"hljs-attribute\">border<\/span>: <span class=\"hljs-number\">1px<\/span> solid <span class=\"hljs-number\">#ccc<\/span>;\r\n    <span class=\"hljs-attribute\">cursor<\/span>: pointer;\r\n}\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"39\">\u0633\u067e\u0633 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a <code data-path-to-node=\"39\" data-index-in-node=\"13\">Product<\/code> \u0631\u0627 \u062f\u0631 <code data-path-to-node=\"39\" data-index-in-node=\"27\">src\/components\/App\/App.js<\/code> \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-117 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQogE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-117\">\n<div class=\"animated-opacity ng-tns-c427156625-117\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-117 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-117\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-117 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-117\"><code class=\"code-container formatted ng-tns-c427156625-117\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> React <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> Product <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'..\/Product\/Product'<\/span>;\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">App<\/span>() <\/span>{\r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Product<\/span> \/&gt;<\/span><\/span>;\r\n}\r\n\r\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> App;\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 data-path-to-node=\"42\">\u06af\u0627\u0645 \u06f3 \u2014 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc State \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062b\u0627\u0628\u062a (Static)<\/h2>\n<p data-path-to-node=\"43\">\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0646 State \u062f\u0631 \u0631\u06cc\u200c\u0627\u06a9\u062a\u060c <b data-path-to-node=\"43\" data-index-in-node=\"33\">\u0647\u0631\u06af\u0632 \u0646\u0628\u0627\u06cc\u062f <code data-path-to-node=\"43\" data-index-in-node=\"44\">this.state<\/code> \u0631\u0627 \u0628\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f<\/b>. \u062f\u0631 \u0639\u0648\u0636\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f \u0648\u06cc\u0698\u0647 <code data-path-to-node=\"43\" data-index-in-node=\"105\">this.setState()<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-path-to-node=\"44\">\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 \u0642\u0628\u0644\u06cc \u0622\u0646 \u0646\u06cc\u0633\u062a (\u0645\u062b\u0644\u0627\u064b \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u0627\u0632 API \u06a9\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0642\u0628\u0644\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f)\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 Object \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 <code data-path-to-node=\"44\" data-index-in-node=\"150\">setState<\/code> \u067e\u0627\u0633 \u062f\u0647\u06cc\u062f.<\/p>\n<p data-path-to-node=\"45\">\u0641\u0627\u06cc\u0644 <code data-path-to-node=\"45\" data-index-in-node=\"5\">src\/components\/Product\/Product.js<\/code> \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-118 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQowE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-118\">\n<div class=\"animated-opacity ng-tns-c427156625-118\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-118 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-118\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-118 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-118\"><code class=\"code-container formatted ng-tns-c427156625-118\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> React, { Component } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'.\/Product.css'<\/span>;\r\n\r\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Product<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Component<\/span> <\/span>{\r\n  state = {\r\n    <span class=\"hljs-attr\">cart<\/span>: [],\r\n    <span class=\"hljs-attr\">total<\/span>: <span class=\"hljs-number\">0<\/span>\r\n  }\r\n\r\n  <span class=\"hljs-comment\">\/\/ \u0645\u062a\u062f \u0627\u0641\u0632\u0648\u062f\u0646 \u0622\u06cc\u062a\u0645 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u062b\u0627\u0628\u062a<\/span>\r\n  add = <span class=\"hljs-function\">() =&gt;<\/span> {\r\n    <span class=\"hljs-built_in\">this<\/span>.setState({\r\n      <span class=\"hljs-attr\">cart<\/span>: [<span class=\"hljs-string\">'\u0628\u0633\u062a\u0646\u06cc'<\/span>],\r\n      <span class=\"hljs-attr\">total<\/span>: <span class=\"hljs-number\">50<\/span>\r\n    });\r\n  }\r\n\r\n  <span class=\"hljs-comment\">\/\/ \u0645\u062a\u062f \u062e\u0627\u0644\u06cc \u06a9\u0631\u062f\u0646 \u0633\u0628\u062f \u062e\u0631\u06cc\u062f<\/span>\r\n  remove = <span class=\"hljs-function\">() =&gt;<\/span> {\r\n    <span class=\"hljs-built_in\">this<\/span>.setState({\r\n      <span class=\"hljs-attr\">cart<\/span>: []\r\n    });\r\n  }\r\n\r\n  currencyOptions = {\r\n    <span class=\"hljs-attr\">minimumFractionDigits<\/span>: <span class=\"hljs-number\">2<\/span>,\r\n    <span class=\"hljs-attr\">maximumFractionDigits<\/span>: <span class=\"hljs-number\">2<\/span>,\r\n  }\r\n\r\n  getTotal = <span class=\"hljs-function\">() =&gt;<\/span> {\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-built_in\">this<\/span>.state.total.toLocaleString(<span class=\"hljs-literal\">undefined<\/span>, <span class=\"hljs-built_in\">this<\/span>.currencyOptions);\r\n  }\r\n\r\n  <span class=\"hljs-function\"><span class=\"hljs-title\">render<\/span>()<\/span> {\r\n    <span class=\"hljs-keyword\">return<\/span> (\r\n      <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"wrapper\"<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n          \u0633\u0628\u062f \u062e\u0631\u06cc\u062f: {this.state.cart.length} \u0622\u06cc\u062a\u0645\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\u0645\u062c\u0645\u0648\u0639 \u0642\u06cc\u0645\u062a: {this.getTotal()} \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"product\"<\/span>&gt;<\/span>\r\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">role<\/span>=<span class=\"hljs-string\">\"img\"<\/span> <span class=\"hljs-attr\">aria-label<\/span>=<span class=\"hljs-string\">\"ice cream\"<\/span>&gt;<\/span>\ud83c\udf66<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">onClick<\/span>=<span class=\"hljs-string\">{this.add}<\/span>&gt;<\/span>\u0627\u0641\u0632\u0648\u062f\u0646<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">onClick<\/span>=<span class=\"hljs-string\">{this.remove}<\/span>&gt;<\/span>\u062d\u0630\u0641<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\r\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/span>\r\n    );\r\n  }\r\n}\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<blockquote data-path-to-node=\"47\">\n<p data-path-to-node=\"47,0\"><b data-path-to-node=\"47,0\" data-index-in-node=\"0\">\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u062f\u0631\u0628\u0627\u0631\u0647 Arrow Functions:<\/b> \u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u062f\u0647\u0627\u06cc <code data-path-to-node=\"47,0\" data-index-in-node=\"46\">add<\/code> \u0648 <code data-path-to-node=\"47,0\" data-index-in-node=\"52\">remove<\/code> \u0628\u0647 \u0635\u0648\u0631\u062a Arrow Function (<code data-path-to-node=\"47,0\" data-index-in-node=\"83\">() =&gt; {}<\/code>) \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0644\u06cc\u062f\u0648\u0627\u0698\u0647 <code data-path-to-node=\"47,0\" data-index-in-node=\"114\">this<\/code> \u0628\u0647 \u0628\u0627\u0641\u062a (Context) \u062e\u0648\u062f\u0650 \u06a9\u0644\u0627\u0633 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f \u0648 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc <code data-path-to-node=\"47,0\" data-index-in-node=\"171\">this.setState<\/code> \u0628\u0627 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0646\u0634\u0648\u06cc\u062f.<\/p>\n<\/blockquote>\n<h2 data-path-to-node=\"49\">\u06af\u0627\u0645 \u06f4 \u2014 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc State \u0628\u0631 \u0627\u0633\u0627\u0633 State \u0642\u0628\u0644\u06cc<\/h2>\n<p data-path-to-node=\"50\">\u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f State \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 \u0642\u0628\u0644\u06cc \u0622\u0646 \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0622\u06cc\u062a\u0645 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0622\u0631\u0627\u06cc\u0647 \u0633\u0628\u062f \u062e\u0631\u06cc\u062f \u06cc\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0642\u06cc\u0645\u062a \u06a9\u0644).<\/p>\n<p data-path-to-node=\"51\">\u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0631\u06cc\u200c\u0627\u06a9\u062a \u062c\u0647\u062a \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0631\u0627\u06cc\u06cc\u060c \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc <code data-path-to-node=\"51\" data-index-in-node=\"54\">setState<\/code> \u0631\u0627 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc (Batch) \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0631\u062c\u0627\u0639 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 <code data-path-to-node=\"51\" data-index-in-node=\"108\">this.state<\/code> \u062f\u0631\u0648\u0646 <code data-path-to-node=\"51\" data-index-in-node=\"124\">setState<\/code> \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627\u0639\u062b \u0627\u06cc\u062c\u0627\u062f \u0628\u0627\u06af \u0648 \u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0642\u062f\u06cc\u0645\u06cc \u0634\u0648\u062f. \u0631\u0627\u0647 \u062d\u0644 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u060c <b data-path-to-node=\"51\" data-index-in-node=\"202\">\u067e\u0627\u0633 \u062f\u0627\u062f\u0646 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0647 <code data-path-to-node=\"51\" data-index-in-node=\"222\">setState<\/code><\/b> \u0627\u0633\u062a.<\/p>\n<p data-path-to-node=\"52\">\u0644\u06cc\u0633\u062a \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u062a\u062f\u0647\u0627\u06cc <code data-path-to-node=\"52\" data-index-in-node=\"48\">add<\/code> \u0648 <code data-path-to-node=\"52\" data-index-in-node=\"54\">remove<\/code> \u0631\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"code-block ng-tns-c427156625-119 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiJso61luOVAxUAAAAAHQAAAAAQpAE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-119\">\n<div class=\"animated-opacity ng-tns-c427156625-119\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-119 ng-star-inserted\">\n<p><span class=\"ng-tns-c427156625-119\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-119 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-119\"><code class=\"code-container formatted ng-tns-c427156625-119\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> React, { Component } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react'<\/span>;\r\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'.\/Product.css'<\/span>;\r\n\r\n<span class=\"hljs-keyword\">const<\/span> products = [\r\n  { <span class=\"hljs-attr\">emoji<\/span>: <span class=\"hljs-string\">'\ud83c\udf66'<\/span>, <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">'\u0628\u0633\u062a\u0646\u06cc'<\/span>, <span class=\"hljs-attr\">price<\/span>: <span class=\"hljs-number\">50<\/span> },\r\n  { <span class=\"hljs-attr\">emoji<\/span>: <span class=\"hljs-string\">'\ud83c\udf69'<\/span>, <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">'\u062f\u0648\u0646\u0627\u062a'<\/span>, <span class=\"hljs-attr\">price<\/span>: <span class=\"hljs-number\">25<\/span> },\r\n  { <span class=\"hljs-attr\">emoji<\/span>: <span class=\"hljs-string\">'\ud83c\udf49'<\/span>, <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">'\u0647\u0646\u062f\u0648\u0627\u0646\u0647'<\/span>, <span class=\"hljs-attr\">price<\/span>: <span class=\"hljs-number\">40<\/span> }\r\n];\r\n\r\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Product<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Component<\/span> <\/span>{\r\n  state = {\r\n    <span class=\"hljs-attr\">cart<\/span>: [],\r\n  }\r\n\r\n  <span class=\"hljs-comment\">\/\/ \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062d\u0635\u0648\u0644 \u0628\u0647 \u0633\u0628\u062f \u0628\u0627 \u062d\u0641\u0638 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0642\u0628\u0644\u06cc<\/span>\r\n  add = <span class=\"hljs-function\">(<span class=\"hljs-params\">product<\/span>) =&gt;<\/span> {\r\n    <span class=\"hljs-built_in\">this<\/span>.setState(<span class=\"hljs-function\"><span class=\"hljs-params\">prevState<\/span> =&gt;<\/span> ({\r\n      <span class=\"hljs-attr\">cart<\/span>: [...prevState.cart, product],\r\n    }));\r\n  }\r\n\r\n  <span class=\"hljs-comment\">\/\/ \u062d\u0630\u0641 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0627\u0632 \u0645\u062d\u0635\u0648\u0644 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647<\/span>\r\n  remove = <span class=\"hljs-function\">(<span class=\"hljs-params\">product<\/span>) =&gt;<\/span> {\r\n    <span class=\"hljs-built_in\">this<\/span>.setState(<span class=\"hljs-function\"><span class=\"hljs-params\">prevState<\/span> =&gt;<\/span> {\r\n      <span class=\"hljs-keyword\">const<\/span> cart = [...prevState.cart];\r\n      <span class=\"hljs-keyword\">const<\/span> productIndex = cart.findIndex(<span class=\"hljs-function\"><span class=\"hljs-params\">p<\/span> =&gt;<\/span> p.name === product.name);\r\n      \r\n      <span class=\"hljs-keyword\">if<\/span> (productIndex &lt; <span class=\"hljs-number\">0<\/span>) {\r\n        <span class=\"hljs-keyword\">return<\/span>; <span class=\"hljs-comment\">\/\/ \u0627\u06af\u0631 \u0645\u062d\u0635\u0648\u0644 \u062f\u0631 \u0633\u0628\u062f \u0646\u0628\u0648\u062f\u060c \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f<\/span>\r\n      }\r\n      \r\n      cart.splice(productIndex, <span class=\"hljs-number\">1<\/span>);\r\n      <span class=\"hljs-keyword\">return<\/span> { cart };\r\n    });\r\n  }\r\n\r\n  currencyOptions = {\r\n    <span class=\"hljs-attr\">minimumFractionDigits<\/span>: <span class=\"hljs-number\">2<\/span>,\r\n    <span class=\"hljs-attr\">maximumFractionDigits<\/span>: <span class=\"hljs-number\">2<\/span>,\r\n  }\r\n\r\n  <span class=\"hljs-comment\">\/\/ \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u062c\u0645\u0648\u0639 \u0642\u06cc\u0645\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0633\u0628\u062f<\/span>\r\n  getTotal = <span class=\"hljs-function\">() =&gt;<\/span> {\r\n    <span class=\"hljs-keyword\">const<\/span> total = <span class=\"hljs-built_in\">this<\/span>.state.cart.reduce(<span class=\"hljs-function\">(<span class=\"hljs-params\">totalCost, item<\/span>) =&gt;<\/span> totalCost + item.price, <span class=\"hljs-number\">0<\/span>);\r\n    <span class=\"hljs-keyword\">return<\/span> total.toLocaleString(<span class=\"hljs-literal\">undefined<\/span>, <span class=\"hljs-built_in\">this<\/span>.currencyOptions);\r\n  }\r\n\r\n  <span class=\"hljs-function\"><span class=\"hljs-title\">render<\/span>()<\/span> {\r\n    <span class=\"hljs-keyword\">return<\/span> (\r\n      <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"wrapper\"<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n          \u0633\u0628\u062f \u062e\u0631\u06cc\u062f: {this.state.cart.length} \u0622\u06cc\u062a\u0645\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\u0645\u062c\u0645\u0648\u0639 \u0642\u06cc\u0645\u062a: {this.getTotal()} \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n          {products.map(product =&gt; (\r\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">key<\/span>=<span class=\"hljs-string\">{product.name}<\/span>&gt;<\/span>\r\n              <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"product\"<\/span>&gt;<\/span>\r\n                <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">role<\/span>=<span class=\"hljs-string\">\"img\"<\/span> <span class=\"hljs-attr\">aria-label<\/span>=<span class=\"hljs-string\">{product.name}<\/span>&gt;<\/span>{product.emoji}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\r\n              <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n              <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">onClick<\/span>=<span class=\"hljs-string\">{()<\/span> =&gt;<\/span> this.add(product)}&gt;\u0627\u0641\u0632\u0648\u062f\u0646<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\r\n              <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">onClick<\/span>=<span class=\"hljs-string\">{()<\/span> =&gt;<\/span> this.remove(product)}&gt;\u062d\u0630\u0641<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\r\n            <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n          ))}\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/span>\r\n    );\r\n  }\r\n}\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"54\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634:<\/h3>\n<p data-path-to-node=\"55\">\u06f1. <b data-path-to-node=\"55\" data-index-in-node=\"3\">\u0639\u062f\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 (Immutability):<\/b> \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0622\u0631\u0627\u06cc\u0647 <code data-path-to-node=\"55\" data-index-in-node=\"53\">cart<\/code> \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 Spread Operator (<code data-path-to-node=\"55\" data-index-in-node=\"84\">[...prevState.cart]<\/code>) \u06cc\u06a9 \u06a9\u067e\u06cc \u0627\u0632 \u0622\u0646 \u062a\u0647\u06cc\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u06f2. <b data-path-to-node=\"55\" data-index-in-node=\"133\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0631\u0646\u062f\u0631 \u0627\u0636\u0627\u0641\u06cc:<\/b> \u062f\u0631 \u0645\u062a\u062f <code data-path-to-node=\"55\" data-index-in-node=\"163\">remove<\/code> \u0627\u06af\u0631 \u0645\u062d\u0635\u0648\u0644 \u062f\u0631 \u0633\u0628\u062f \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0645\u0642\u062f\u0627\u0631 <code data-path-to-node=\"55\" data-index-in-node=\"211\">undefined<\/code> \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0631\u06cc\u200c\u0627\u06a9\u062a \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0631\u0627 \u0628\u06cc\u200c\u062f\u0644\u06cc\u0644 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0646\u062f\u0631 \u0646\u06a9\u0646\u062f.<\/p>\n<h2 data-path-to-node=\"68\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h2>\n<p data-path-to-node=\"69\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0627 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a State \u062f\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u062f. \u0622\u0645\u0648\u062e\u062a\u06cc\u062f \u06a9\u0647 \u0686\u0637\u0648\u0631 State \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062a\u062f <code data-path-to-node=\"69\" data-index-in-node=\"151\">setState<\/code> \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u06cc\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 State \u0642\u0628\u0644\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f \u0648 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 (Mutation) \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-path-to-node=\"69\">\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a (React)\u060c \u0645\u0641\u0647\u0648\u0645 State \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0648 \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u062a\u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d State \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0644\u06cc\u062f\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0648\u0628\u200c\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0648 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u0633\u062a\u061b \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627\u06cc \u06cc\u06a9 \u0641\u0631\u0645 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0627\u0632 API. \u0646\u06a9\u062a\u0647: \u0627\u06af\u0631\u0686\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":6680,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[190,67],"tags":[1840,1841,1839,1843,1837,1838,1834,1835,1836,1842,1572],"class_list":["post-6678","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-67","tag-class-components---","tag--setstate--react","tag-1839","tag---state---","tag--state--react","tag--class-component--functional-component","tag-1834","tag-1835","tag--componentdidcatch---","tag-1842"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=6678"}],"version-history":[{"count":2,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6678\/revisions"}],"predecessor-version":[{"id":6681,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6678\/revisions\/6681"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6680"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}