{"id":82065,"date":"2024-10-31T10:12:37","date_gmt":"2024-10-31T06:42:37","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/"},"modified":"2024-10-31T10:12:37","modified_gmt":"2024-10-31T06:42:37","slug":"20-essential-react-tricks-every-developer-must-know-5db1","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/","title":{"rendered":"20 \u062a\u0631\u0641\u0646\u062f \u0636\u0631\u0648\u0631\u06cc React \u06a9\u0647 \u0647\u0631 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u06cc \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0633\u0644\u0637 \u0628\u0631 \u0622\u0646 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a\u0646 \u0627\u0632 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0631\u0641\u0646\u062f\u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062e\u0644\u0627\u0635\u0647 \u0627\u06cc \u0627\u0632 \u0634\u062e\u0635\u06cc \u0645\u0646 \u0627\u0633\u062a favourite 20 React tricks \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647\u0631\u0647 \u0648\u0631\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f\u0647\u0627\u06cc \u062a\u0645\u06cc\u0632\u062a\u0631 \u0648 \u0645\u0648\u062b\u0631\u062a\u0631 \u06a9\u0645\u06a9 \u06a9\u0646\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0645\u062b\u0627\u0644\u200c\u0647\u0627 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645!<\/p>\n<p>  1. \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u062f\u0627\u0631 \u06a9\u0648\u062a\u0627\u0647 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc<\/p>\n<p>\u067e\u0631\u0647\u06cc\u0632 \u0627\u0632 \u067e\u0631\u062d\u0631\u0641\u06cc if \u0639\u0628\u0627\u0631\u0627\u062a \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc \u0628\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0627\u062a\u0635\u0627\u0644 \u06a9\u0648\u062a\u0627\u0647.<\/p>\n<p>{isLoading &amp;&amp; &lt;Spinner \/&gt;}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0646\u062f\u0631 \u0645\u06cc \u06a9\u0646\u062f  \u062a\u0646\u0647\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 isLoading \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u060c \u062a\u0645\u06cc\u0632 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 JSX \u062e\u0648\u062f.<\/p>\n<p>  2. \u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0627 classnames \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647<\/p>\n<p>\u0627\u06cc\u0646 classnames \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u060c \u0627\u0639\u0645\u0627\u0644 \u0645\u0634\u0631\u0648\u0637 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>npm install classnames<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>import classNames from &#8216;classnames&#8217;;<\/p>\n<p>const buttonClass = classNames({<br \/>\n  &#8216;btn&#8217;: true,<br \/>\n  &#8216;btn-primary&#8217;: isPrimary,<br \/>\n  &#8216;btn-secondary&#8217;: !isPrimary,<br \/>\n});<\/p>\n<p>&lt;button className={buttonClass}&gt;Click Mebutton&gt;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  3. \u0628\u0647 \u062e\u0627\u0637\u0631 \u0633\u067e\u0631\u062f\u0646 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u0628\u0627 useMemo<\/p>\n<p>\u0627\u06af\u0631 \u06cc\u06a9 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u067e\u0631\u0647\u0632\u06cc\u0646\u0647 \u0627\u0633\u062a\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f \u062a\u0627 React \u0628\u06cc \u062c\u0647\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u0646\u06a9\u0646\u062f.<\/p>\n<p>const sortedData = useMemo(() =&gt; data.sort(), [data]);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc \u06a9\u0646\u062f sortedData \u062a\u0646\u0647\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 data \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  4. \u062d\u0630\u0641 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627 \u0628\u0627 useEffect<\/p>\n<p>\u0628\u0627 \u062d\u0630\u0641 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648\u0631\u0648\u062f\u06cc\u060c \u0627\u0632 \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f \u062f\u0627\u0626\u0645\u06cc \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>const [value, setValue] = useState(&#8221;);<br \/>\nconst [debouncedValue, setDebouncedValue] = useState(&#8221;);<\/p>\n<p>useEffect(() =&gt; {<br \/>\n  const handler = setTimeout(() =&gt; setDebouncedValue(value), 500);<br \/>\n  return () =&gt; clearTimeout(handler);<br \/>\n}, [value]);<\/p>\n<p>&lt;input value={value} onChange={(e) =&gt; setValue(e.target.value)} \/&gt;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  5. \u0642\u0644\u0627\u0628 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/p>\n<p>\u0645\u0646\u0637\u0642 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0642\u0644\u0627\u0628 \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u067e\u0633\u0648\u0644\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0628\u06cc\u0646 \u0627\u062c\u0632\u0627\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>function useFetch(url) {<br \/>\n  const [data, setData] = useState(null);<\/p>\n<p>  useEffect(() =&gt; {<br \/>\n    fetch(url).then(res =&gt; res.json()).then(setData);<br \/>\n  }, [url]);<\/p>\n<p>  return data;<br \/>\n}<\/p>\n<p>const Component = () =&gt; {<br \/>\n  const data = useFetch(&#8216;\/api\/data&#8217;);<br \/>\n  return &lt;div&gt;{data ? JSON.stringify(data) : &#8216;Loading&#8230;&#8217;}div&gt;;<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  6. Lazy Loading Components \u0628\u0627 React.lazy<\/p>\n<p>\u0628\u0627 \u062a\u0642\u0633\u06cc\u0645 \u0627\u062c\u0632\u0627\u06cc \u062e\u0648\u062f \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>const LazyComponent = React.lazy(() =&gt; import(&#8216;.\/LazyComponent&#8217;));<\/p>\n<p>function App() {<br \/>\n  return (<br \/>\n    &lt;React.Suspense fallback={&lt;div&gt;Loading&#8230;div&gt;}&gt;<br \/>\n      &lt;LazyComponent \/&gt;<br \/>\n    React.Suspense&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  7. \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 Props \u06cc\u0627 State \u0628\u0627 useRef<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062d\u0627\u0644\u062a \u0642\u0628\u0644\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f useRef.<\/p>\n<p>const [count, setCount] = useState(0);<br \/>\nconst prevCount = useRef(count);<\/p>\n<p>useEffect(() =&gt; {<br \/>\n  prevCount.current = count;<br \/>\n}, [count]);<\/p>\n<p>console.log(`Previous: ${prevCount.current}, Current: ${count}`);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  8. \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u062a\u0648\u0627\u0628\u0639 \u0628\u0647 \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f useCallback<\/p>\n<p>\u0627\u06af\u0631 \u062a\u0627\u0628\u0639\u06cc \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u062f\u0627\u0631\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 \u062d\u0627\u0641\u0638\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f useCallback.<\/p>\n<p>const increment = useCallback(() =&gt; setCount(count + 1), [count]);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  9. \u062a\u062c\u0647\u06cc\u0632\u0627\u062a \u062a\u062e\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u06a9\u062f \u062a\u0645\u06cc\u0632\u062a\u0631<\/p>\n<p>\u067e\u0627\u06cc\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631\u0633\u062a \u062f\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u062a\u062e\u0631\u06cc\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>const User = ({ name, age }) =&gt; (<br \/>\n  &lt;div&gt;{name} is {age} years olddiv&gt;<br \/>\n);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  10. React.Fragment  \u0628\u0631\u0627\u06cc \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0639\u0646\u0627\u0635\u0631 \u0628\u062f\u0648\u0646 Div \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc<\/p>\n<p>\u0639\u0646\u0627\u0635\u0631 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u06af\u0631\u0647 DOM \u0627\u0636\u0627\u0641\u06cc \u0628\u067e\u06cc\u0686\u06cc\u062f.<\/p>\n<p>&lt;&gt;<br \/>\n  &lt;p&gt;Paragraph 1p&gt;<br \/>\n  &lt;p&gt;Paragraph 2p&gt;<br \/>\n&gt;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  11. \u0645\u0631\u0632\u0647\u0627\u06cc \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u06cc\u0627\u0641\u062a\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062e\u0631\u0627\u0628 \u0634\u062f\u0646 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u0641\u0631\u0632\u0646\u062f \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f.<\/p>\n<p>class ErrorBoundary extends React.Component {<br \/>\n  state = { hasError: false };<\/p>\n<p>  static getDerivedStateFromError() {<br \/>\n    return { hasError: true };<br \/>\n  }<\/p>\n<p>  render() {<br \/>\n    if (this.state.hasError) return &lt;h1&gt;Something went wrong.h1&gt;;<br \/>\n    return this.props.children;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>          \ud83d\udc68\u200d\ud83d\udcbb \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 Full Stack | \ud83e\udd16 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646 | \ud83e\udd1d Dev Relations Pro \u2013 \ud83d\udcbc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062e\u062f\u0627\u0645 &#8211; Jagroop2001<\/p>\n<p>        github.com<\/p>\n<p>  12. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PropTypes \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc Prop<\/p>\n<p>\u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u06cc\u0647\u060c \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0631\u0627 \u0632\u0648\u062f\u062a\u0631 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f.<\/p>\n<p>import PropTypes from &#8216;prop-types&#8217;;<\/p>\n<p>function MyComponent({ name }) {<br \/>\n  return &lt;div&gt;{name}div&gt;;<br \/>\n}<\/p>\n<p>MyComponent.propTypes = {<br \/>\n  name: PropTypes.string.isRequired,<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  13. \u06a9\u0627\u0647\u0646\u062f\u0647 \u0647\u0627\u06cc \u0627\u06cc\u0627\u0644\u062a\u06cc \u0628\u0627 useReducer<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062d\u0627\u0644\u062a\u060c useReducer \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<p>const initialState = { count: 0 };<\/p>\n<p>function reducer(state, action) {<br \/>\n  switch (action.type) {<br \/>\n    case &#8216;increment&#8217;: return { count: state.count + 1 };<br \/>\n    case &#8216;decrement&#8217;: return { count: state.count &#8211; 1 };<br \/>\n    default: return state;<br \/>\n  }<br \/>\n}<\/p>\n<p>const [state, dispatch] = useReducer(reducer, initialState);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  14. useLayoutEffect  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0647\u0627\u06cc DOM<\/p>\n<p>\u0627\u0641\u06a9\u062a \u0647\u0627 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc DOM \u0627\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0631\u0646\u06af \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>useLayoutEffect(() =&gt; {<br \/>\n  console.log(&#8220;Layout effect&#8221;);<br \/>\n}, []);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  15. Logic State \u0631\u0627 \u0628\u0627 Context \u0648 \u06a9\u067e\u0633\u0648\u0644\u0647 \u06a9\u0646\u06cc\u062f useContext<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u062d\u0627\u0644\u062a \u062c\u0647\u0627\u0646\u06cc \u0628\u062f\u0648\u0646 \u062d\u0641\u0627\u0631\u06cc \u067e\u0627\u06cc\u0647.<\/p>\n<p>const ThemeContext = React.createContext();<\/p>\n<p>function MyComponent() {<br \/>\n  const theme = useContext(ThemeContext);<br \/>\n  return &lt;div style={{ background: theme }}&gt;Hello!div&gt;;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  16. \u0627\u0632 \u062a\u0639\u0627\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u062f\u0631 JSX \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u062a\u0639\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u0628\u0627\u0639\u062b \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0639\u0648\u0636\u060c \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062e\u0627\u0631\u062c \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>const handleClick = () =&gt; console.log(&#8220;Clicked&#8221;);<\/p>\n<p>&lt;button onClick={handleClick}&gt;Click Mebutton&gt;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  17. \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u06cc\u0645\u0646 \u0628\u0647 \u0627\u0645\u0648\u0627\u0644\u060c \u0627\u0632 Chaining \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062f\u0631 JSX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0647\u06cc \u06cc\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>&lt;p&gt;{user?.name}p&gt;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  18. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f key \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f<\/p>\n<p>\u0647\u0645\u06cc\u0634\u0647 \u0647\u0646\u06af\u0627\u0645 \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0633\u062a \u0647\u0627 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>{items.map(item =&gt; (<br \/>\n  &lt;div key={item.id}&gt;{item.name}div&gt;<br \/>\n))}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  19. \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0628\u0647\u062a\u0631 \u0648\u0627\u0631\u062f\u0627\u062a\u060c \u0642\u0637\u0639\u0627\u062a \u0631\u0627 \u0628\u0627 \u0635\u0627\u062f\u0631\u0627\u062a \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0635\u0627\u062f\u0631 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0635\u0627\u062f\u0631\u0627\u062a \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0648\u0627\u0631\u062f\u0627\u062a \u0642\u0637\u0639\u0627\u062a \u062e\u0627\u0635 \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>export const ComponentA = () =&gt; &lt;div&gt;Adiv&gt;;<br \/>\nexport const ComponentB = () =&gt; &lt;div&gt;Bdiv&gt;;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0633\u067e\u0633 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>import { ComponentA } from &#8216;.\/Components&#8217;;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  20. \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0627\u062c\u0632\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f: \u0627\u062c\u0632\u0627\u06cc \u0645\u0631\u062a\u0628\u0647 \u0628\u0627\u0644\u0627\u062a\u0631 (HOC)<\/p>\n<p>\u0627\u062c\u0632\u0627\u0621 \u0631\u0627 \u0628\u0627 HOC \u0628\u067e\u06cc\u0686\u06cc\u062f \u062a\u0627 \u0645\u0646\u0637\u0642 \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>function withLogging(WrappedComponent) {<br \/>\n  return function Wrapped(props) {<br \/>\n    console.log(&#8216;Component Rendered&#8217;);<br \/>\n    return &lt;WrappedComponent {&#8230;props} \/&gt;;<br \/>\n  };<br \/>\n}<\/p>\n<p>const MyComponentWithLogging = withLogging(MyComponent);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u0633\u0644\u0637 \u0628\u0631 \u0627\u06cc\u0646 \u062a\u0631\u0641\u0646\u062f\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u06a9\u062f React \u0645\u062e\u062a\u0635\u0631\u060c \u062e\u0648\u0627\u0646\u0627 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f! \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<div data-article-id=\"2066678\" id=\"article-body\">\n<p><strong>\u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f<\/strong> \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0633\u0644\u0637 \u0628\u0631 \u0622\u0646 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a\u0646 \u0627\u0632 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0631\u0641\u0646\u062f\u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062e\u0644\u0627\u0635\u0647 \u0627\u06cc \u0627\u0632 \u0634\u062e\u0635\u06cc \u0645\u0646 \u0627\u0633\u062a <code>favourite 20 React tricks<\/code> \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647\u0631\u0647 \u0648\u0631\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f\u0647\u0627\u06cc \u062a\u0645\u06cc\u0632\u062a\u0631 \u0648 \u0645\u0648\u062b\u0631\u062a\u0631 \u06a9\u0645\u06a9 \u06a9\u0646\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0645\u062b\u0627\u0644\u200c\u0647\u0627 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645!<\/p>\n<hr\/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#1_%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C_%D9%85%D8%AF%D8%A7%D8%B1_%DA%A9%D9%88%D8%AA%D8%A7%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D9%86%D8%AF%D8%B1_%D8%B4%D8%B1%D8%B7%DB%8C\" >1. \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u062f\u0627\u0631 \u06a9\u0648\u062a\u0627\u0647 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#2_%D9%86%D8%A7%D9%85_%DA%A9%D9%84%D8%A7%D8%B3_%D9%87%D8%A7%DB%8C_%D9%BE%D9%88%DB%8C%D8%A7_%D8%A8%D8%A7_classnames_%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87\" >2. \u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0627 classnames \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#3_%D8%A8%D9%87_%D8%AE%D8%A7%D8%B7%D8%B1_%D8%B3%D9%BE%D8%B1%D8%AF%D9%86_%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D8%A7%D8%AA_%DA%AF%D8%B1%D8%A7%D9%86_%D9%82%DB%8C%D9%85%D8%AA_%D8%A8%D8%A7_useMemo\" >3. \u0628\u0647 \u062e\u0627\u0637\u0631 \u0633\u067e\u0631\u062f\u0646 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u0628\u0627 useMemo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#4_%D8%AD%D8%B0%D9%81_%D9%88%D8%B1%D9%88%D8%AF%DB%8C_%D9%87%D8%A7_%D8%A8%D8%A7_useEffect\" >4. \u062d\u0630\u0641 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627 \u0628\u0627 useEffect<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#5_%D9%82%D9%84%D8%A7%D8%A8_%D9%87%D8%A7%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%85%D9%86%D8%B7%D9%82_%D9%82%D8%A7%D8%A8%D9%84_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%85%D8%AC%D8%AF%D8%AF\" >5. \u0642\u0644\u0627\u0628 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#6_Lazy_Loading_Components_%D8%A8%D8%A7_Reactlazy\" >6. Lazy Loading Components \u0628\u0627 React.lazy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#7_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_Props_%DB%8C%D8%A7_State_%D8%A8%D8%A7_useRef\" >7. \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 Props \u06cc\u0627 State \u0628\u0627 useRef<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#8_%D8%A8%D8%A7_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%AA%D9%88%D8%A7%D8%A8%D8%B9_%D8%A8%D9%87_%D8%B1%D9%86%D8%AF%D8%B1_%D9%85%D8%AC%D8%AF%D8%AF_%D8%AE%D9%88%D8%AF%D8%AF%D8%A7%D8%B1%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF_useCallback\" >8. \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u062a\u0648\u0627\u0628\u0639 \u0628\u0647 \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f useCallback<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#9_%D8%AA%D8%AC%D9%87%DB%8C%D8%B2%D8%A7%D8%AA_%D8%AA%D8%AE%D8%B1%DB%8C%D8%A8%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%AF_%D8%AA%D9%85%DB%8C%D8%B2%D8%AA%D8%B1\" >9. \u062a\u062c\u0647\u06cc\u0632\u0627\u062a \u062a\u062e\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u06a9\u062f \u062a\u0645\u06cc\u0632\u062a\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#10_ReactFragment_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%AF%D8%B1%D9%88%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D8%B9%D9%86%D8%A7%D8%B5%D8%B1_%D8%A8%D8%AF%D9%88%D9%86_Div_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B6%D8%A7%D9%81%DB%8C\" >10. React.Fragment  \u0628\u0631\u0627\u06cc \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0639\u0646\u0627\u0635\u0631 \u0628\u062f\u0648\u0646 Div \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#11_%D9%85%D8%B1%D8%B2%D9%87%D8%A7%DB%8C_%D8%AE%D8%B7%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%DB%8C%D8%A7%D9%81%D8%AA%D9%86_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA\" >11. \u0645\u0631\u0632\u0647\u0627\u06cc \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u06cc\u0627\u0641\u062a\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#%F0%9F%91%A8%E2%80%8D%F0%9F%92%BB_%D8%AA%D9%88%D8%B3%D8%B9%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_Full_Stack_%F0%9F%A4%96_%D8%AA%D9%88%D8%B3%D8%B9%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C_%D9%85%D8%A7%D8%B4%DB%8C%D9%86_%F0%9F%A4%9D_Dev_Relations_Pro_%E2%80%93_%F0%9F%92%BC_%D9%85%D9%88%D8%AC%D9%88%D8%AF_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85_%E2%80%93_Jagroop2001_githubcom\" >\ud83d\udc68\u200d\ud83d\udcbb \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 Full Stack | \ud83e\udd16 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646 | \ud83e\udd1d Dev Relations Pro \u2013 \ud83d\udcbc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062e\u062f\u0627\u0645 &#8211; Jagroop2001\n        \n\n           \n        github.com<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#12_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_PropTypes_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_Prop\" >12. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PropTypes \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc Prop<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#13_%DA%A9%D8%A7%D9%87%D9%86%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_%D8%A7%DB%8C%D8%A7%D9%84%D8%AA%DB%8C_%D8%A8%D8%A7_useReducer\" >13. \u06a9\u0627\u0647\u0646\u062f\u0647 \u0647\u0627\u06cc \u0627\u06cc\u0627\u0644\u062a\u06cc \u0628\u0627 useReducer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#14_useLayoutEffect_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AF%D8%B3%D8%AA%DA%A9%D8%A7%D8%B1%DB%8C_%D9%87%D8%A7%DB%8C_DOM\" >14. useLayoutEffect  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0647\u0627\u06cc DOM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#15_Logic_State_%D8%B1%D8%A7_%D8%A8%D8%A7_Context_%D9%88_%DA%A9%D9%BE%D8%B3%D9%88%D9%84%D9%87_%DA%A9%D9%86%DB%8C%D8%AF_useContext\" >15. Logic State \u0631\u0627 \u0628\u0627 Context \u0648 \u06a9\u067e\u0633\u0648\u0644\u0647 \u06a9\u0646\u06cc\u062f useContext<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#16_%D8%A7%D8%B2_%D8%AA%D8%B9%D8%A7%D8%B1%DB%8C%D9%81_%D8%AA%D9%88%D8%A7%D8%A8%D8%B9_%D8%AF%D8%B1%D9%88%D9%86_%D8%AE%D8%B7%DB%8C_%D8%AF%D8%B1_JSX_%D8%A7%D8%AC%D8%AA%D9%86%D8%A7%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >16. \u0627\u0632 \u062a\u0639\u0627\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u062f\u0631 JSX \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#17_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A7%DB%8C%D9%85%D9%86_%D8%A8%D9%87_%D8%A7%D9%85%D9%88%D8%A7%D9%84%D8%8C_%D8%A7%D8%B2_Chaining_%D8%A7%D8%AE%D8%AA%DB%8C%D8%A7%D8%B1%DB%8C_%D8%AF%D8%B1_JSX_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >17. \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u06cc\u0645\u0646 \u0628\u0647 \u0627\u0645\u0648\u0627\u0644\u060c \u0627\u0632 Chaining \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062f\u0631 JSX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#18_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF_key_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C_%D8%A7%D8%B2_%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA_%D8%B1%D9%86%D8%AF%D8%B1_%D9%85%D8%AC%D8%AF%D8%AF\" >18. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f key \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#19_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%A8%D9%87%D8%AA%D8%B1_%D9%88%D8%A7%D8%B1%D8%AF%D8%A7%D8%AA%D8%8C_%D9%82%D8%B7%D8%B9%D8%A7%D8%AA_%D8%B1%D8%A7_%D8%A8%D8%A7_%D8%B5%D8%A7%D8%AF%D8%B1%D8%A7%D8%AA_%D9%86%D8%A7%D9%85%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%D8%B4%D8%AF%D9%87_%D8%B5%D8%A7%D8%AF%D8%B1_%DA%A9%D9%86%DB%8C%D8%AF\" >19. \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0628\u0647\u062a\u0631 \u0648\u0627\u0631\u062f\u0627\u062a\u060c \u0642\u0637\u0639\u0627\u062a \u0631\u0627 \u0628\u0627 \u0635\u0627\u062f\u0631\u0627\u062a \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0635\u0627\u062f\u0631 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/nabfollower.com\/blog\/20-essential-react-tricks-every-developer-must-know-5db1\/#20_%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C_%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D9%82%D8%A7%D8%A8%D9%84_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%85%D8%AC%D8%AF%D8%AF_%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D9%85%D8%B1%D8%AA%D8%A8%D9%87_%D8%A8%D8%A7%D9%84%D8%A7%D8%AA%D8%B1_HOC\" >20. \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0627\u062c\u0632\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f: \u0627\u062c\u0632\u0627\u06cc \u0645\u0631\u062a\u0628\u0647 \u0628\u0627\u0644\u0627\u062a\u0631 (HOC)<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"1_%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C_%D9%85%D8%AF%D8%A7%D8%B1_%DA%A9%D9%88%D8%AA%D8%A7%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D9%86%D8%AF%D8%B1_%D8%B4%D8%B1%D8%B7%DB%8C\"><\/span>\n<p>  1. <strong>\u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u062f\u0627\u0631 \u06a9\u0648\u062a\u0627\u0647 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0631\u0647\u06cc\u0632 \u0627\u0632 \u067e\u0631\u062d\u0631\u0641\u06cc <code>if<\/code> \u0639\u0628\u0627\u0631\u0627\u062a \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc \u0628\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0627\u062a\u0635\u0627\u0644 \u06a9\u0648\u062a\u0627\u0647.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">{<\/span><span class=\"nx\">isLoading<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">Spinner<\/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>\u0627\u06cc\u0646 \u0631\u0646\u062f\u0631 \u0645\u06cc \u06a9\u0646\u062f <code><spinner\/><\/code> \u062a\u0646\u0647\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 <code>isLoading<\/code> \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u060c \u062a\u0645\u06cc\u0632 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 JSX \u062e\u0648\u062f.<\/p>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"2_%D9%86%D8%A7%D9%85_%DA%A9%D9%84%D8%A7%D8%B3_%D9%87%D8%A7%DB%8C_%D9%BE%D9%88%DB%8C%D8%A7_%D8%A8%D8%A7_classnames_%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87\"><\/span>\n<p>  2. <strong>\u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0627 <code>classnames<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 <code>classnames<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u060c \u0627\u0639\u0645\u0627\u0644 \u0645\u0634\u0631\u0648\u0637 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install <\/span>classnames\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<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">classNames<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">classnames<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">buttonClass<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">classNames<\/span><span class=\"p\">({<\/span>\n  <span class=\"dl\">'<\/span><span class=\"s1\">btn<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n  <span class=\"dl\">'<\/span><span class=\"s1\">btn-primary<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"nx\">isPrimary<\/span><span class=\"p\">,<\/span>\n  <span class=\"dl\">'<\/span><span class=\"s1\">btn-secondary<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"o\">!<\/span><span class=\"nx\">isPrimary<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">buttonClass<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Click Me<span class=\"p\"\/><span class=\"nt\">button<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%A8%D9%87_%D8%AE%D8%A7%D8%B7%D8%B1_%D8%B3%D9%BE%D8%B1%D8%AF%D9%86_%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D8%A7%D8%AA_%DA%AF%D8%B1%D8%A7%D9%86_%D9%82%DB%8C%D9%85%D8%AA_%D8%A8%D8%A7_useMemo\"><\/span>\n<p>  3. <strong>\u0628\u0647 \u062e\u0627\u0637\u0631 \u0633\u067e\u0631\u062f\u0646 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u0628\u0627 <code>useMemo<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06af\u0631 \u06cc\u06a9 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u067e\u0631\u0647\u0632\u06cc\u0646\u0647 \u0627\u0633\u062a\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f \u062a\u0627 React \u0628\u06cc \u062c\u0647\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u0646\u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">sortedData<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useMemo<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nf\">sort<\/span><span class=\"p\">(),<\/span> <span class=\"p\">[<\/span><span class=\"nx\">data<\/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>\u0627\u06cc\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>sortedData<\/code> \u062a\u0646\u0647\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 <code>data<\/code> \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"4_%D8%AD%D8%B0%D9%81_%D9%88%D8%B1%D9%88%D8%AF%DB%8C_%D9%87%D8%A7_%D8%A8%D8%A7_useEffect\"><\/span>\n<p>  4. <strong>\u062d\u0630\u0641 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627 \u0628\u0627 <code>useEffect<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u062d\u0630\u0641 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648\u0631\u0648\u062f\u06cc\u060c \u0627\u0632 \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f \u062f\u0627\u0626\u0645\u06cc \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">value<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setValue<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">debouncedValue<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setDebouncedValue<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handler<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">setTimeout<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">setDebouncedValue<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">),<\/span> <span class=\"mi\">500<\/span><span class=\"p\">);<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">clearTimeout<\/span><span class=\"p\">(<\/span><span class=\"nx\">handler<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">value<\/span><span class=\"p\">]);<\/span>\n\n<span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/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=\"nf\">setValue<\/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<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"5_%D9%82%D9%84%D8%A7%D8%A8_%D9%87%D8%A7%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%85%D9%86%D8%B7%D9%82_%D9%82%D8%A7%D8%A8%D9%84_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%85%D8%AC%D8%AF%D8%AF\"><\/span>\n<p>  5. <strong>\u0642\u0644\u0627\u0628 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0646\u0637\u0642 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0642\u0644\u0627\u0628 \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u067e\u0633\u0648\u0644\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0628\u06cc\u0646 \u0627\u062c\u0632\u0627\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">useFetch<\/span><span class=\"p\">(<\/span><span class=\"nx\">url<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setData<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">fetch<\/span><span class=\"p\">(<\/span><span class=\"nx\">url<\/span><span class=\"p\">).<\/span><span class=\"nf\">then<\/span><span class=\"p\">(<\/span><span class=\"nx\">res<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">()).<\/span><span class=\"nf\">then<\/span><span class=\"p\">(<\/span><span class=\"nx\">setData<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">url<\/span><span class=\"p\">]);<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"nx\">data<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<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\">data<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useFetch<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/api\/data<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">data<\/span> <span class=\"p\">?<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">)<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Loading...<\/span><span class=\"dl\">'<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">div<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"6_Lazy_Loading_Components_%D8%A8%D8%A7_Reactlazy\"><\/span>\n<p>  6. <strong>Lazy Loading Components \u0628\u0627 <code>React.lazy<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u062a\u0642\u0633\u06cc\u0645 \u0627\u062c\u0632\u0627\u06cc \u062e\u0648\u062f \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">LazyComponent<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nf\">lazy<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">import<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.\/LazyComponent<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">App<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">Suspense<\/span> <span class=\"na\">fallback<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>Loading...<span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">LazyComponent<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">Suspense<\/span><span class=\"p\">&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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"7_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_Props_%DB%8C%D8%A7_State_%D8%A8%D8%A7_useRef\"><\/span>\n<p>  7. <strong>\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 Props \u06cc\u0627 State \u0628\u0627 <code>useRef<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062d\u0627\u0644\u062a \u0642\u0628\u0644\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>useRef<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">count<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setCount<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">prevCount<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRef<\/span><span class=\"p\">(<\/span><span class=\"nx\">count<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">prevCount<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">count<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">count<\/span><span class=\"p\">]);<\/span>\n\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Previous: <\/span><span class=\"p\">${<\/span><span class=\"nx\">prevCount<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">}<\/span><span class=\"s2\">, Current: <\/span><span class=\"p\">${<\/span><span class=\"nx\">count<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"8_%D8%A8%D8%A7_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%AA%D9%88%D8%A7%D8%A8%D8%B9_%D8%A8%D9%87_%D8%B1%D9%86%D8%AF%D8%B1_%D9%85%D8%AC%D8%AF%D8%AF_%D8%AE%D9%88%D8%AF%D8%AF%D8%A7%D8%B1%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF_useCallback\"><\/span>\n<p>  8. <strong>\u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u062a\u0648\u0627\u0628\u0639 \u0628\u0647 \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f <code>useCallback<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06af\u0631 \u062a\u0627\u0628\u0639\u06cc \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u062f\u0627\u0631\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 \u062d\u0627\u0641\u0638\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f <code>useCallback<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">increment<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useCallback<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">setCount<\/span><span class=\"p\">(<\/span><span class=\"nx\">count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">),<\/span> <span class=\"p\">[<\/span><span class=\"nx\">count<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"9_%D8%AA%D8%AC%D9%87%DB%8C%D8%B2%D8%A7%D8%AA_%D8%AA%D8%AE%D8%B1%DB%8C%D8%A8%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%AF_%D8%AA%D9%85%DB%8C%D8%B2%D8%AA%D8%B1\"><\/span>\n<p>  9. <strong>\u062a\u062c\u0647\u06cc\u0632\u0627\u062a \u062a\u062e\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u06a9\u062f \u062a\u0645\u06cc\u0632\u062a\u0631<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0627\u06cc\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631\u0633\u062a \u062f\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u062a\u062e\u0631\u06cc\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">User<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">age<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n  <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span> is <span class=\"si\">{<\/span><span class=\"nx\">age<\/span><span class=\"si\">}<\/span> years old<span class=\"p\"\/><span class=\"nt\">div<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"10_ReactFragment_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%AF%D8%B1%D9%88%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D8%B9%D9%86%D8%A7%D8%B5%D8%B1_%D8%A8%D8%AF%D9%88%D9%86_Div_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B6%D8%A7%D9%81%DB%8C\"><\/span>\n<p>  10. <strong><code>React.Fragment<\/code>  \u0628\u0631\u0627\u06cc \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0639\u0646\u0627\u0635\u0631 \u0628\u062f\u0648\u0646 Div \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0639\u0646\u0627\u0635\u0631 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u06af\u0631\u0647 DOM \u0627\u0636\u0627\u0641\u06cc \u0628\u067e\u06cc\u0686\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">&lt;&gt;<\/span>\n  <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>Paragraph 1<span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>Paragraph 2<span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>\n<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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"11_%D9%85%D8%B1%D8%B2%D9%87%D8%A7%DB%8C_%D8%AE%D8%B7%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%DB%8C%D8%A7%D9%81%D8%AA%D9%86_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA\"><\/span>\n<p>  11. <strong>\u0645\u0631\u0632\u0647\u0627\u06cc \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u06cc\u0627\u0641\u062a\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062e\u0631\u0627\u0628 \u0634\u062f\u0646 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u0641\u0631\u0632\u0646\u062f \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">class<\/span> <span class=\"nc\">ErrorBoundary<\/span> <span class=\"kd\">extends<\/span> <span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">Component<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">state<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">hasError<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">};<\/span>\n\n  <span class=\"kd\">static<\/span> <span class=\"nf\">getDerivedStateFromError<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"na\">hasError<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">};<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">render<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">state<\/span><span class=\"p\">.<\/span><span class=\"nx\">hasError<\/span><span class=\"p\">)<\/span> <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>Something went wrong.<span class=\"p\"\/><span class=\"nt\">h1<\/span><span class=\"p\">&gt;;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">props<\/span><span class=\"p\">.<\/span><span class=\"nx\">children<\/span><span class=\"p\">;<\/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<h2><span class=\"ez-toc-section\" id=\"%F0%9F%91%A8%E2%80%8D%F0%9F%92%BB_%D8%AA%D9%88%D8%B3%D8%B9%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_Full_Stack_%F0%9F%A4%96_%D8%AA%D9%88%D8%B3%D8%B9%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C_%D9%85%D8%A7%D8%B4%DB%8C%D9%86_%F0%9F%A4%9D_Dev_Relations_Pro_%E2%80%93_%F0%9F%92%BC_%D9%85%D9%88%D8%AC%D9%88%D8%AF_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85_%E2%80%93_Jagroop2001_githubcom\"><\/span>\n<div class=\"crayons-card c-embed text-styles text-styles--secondary\">\n<div class=\"c-embed__cover\">\n<p>          <\/p><\/div>\n<div class=\"c-embed__body\">\n<p class=\"truncate-at-3\">\n<p>          \ud83d\udc68\u200d\ud83d\udcbb \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 Full Stack | \ud83e\udd16 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646 | \ud83e\udd1d Dev Relations Pro \u2013 \ud83d\udcbc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062e\u062f\u0627\u0645 &#8211; Jagroop2001\n        <\/p>\n<div class=\"color-secondary fs-s flex items-center\">\n          <img decoding=\"async\" alt=\"\u0641\u0627\u0648\u06cc\u06a9\u0648\u0646\" class=\"c-embed__favicon m-0 mr-2 radius-0\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg\" loading=\"lazy\" width=\"32\" height=\"32\" title=\"\"><br \/>\n        github.com\n      <\/div>\n<\/p><\/div>\n<\/div>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"12_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_PropTypes_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_Prop\"><\/span>\n<p>  12. <strong>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>PropTypes<\/code> \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc Prop<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u06cc\u0647\u060c \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0631\u0627 \u0632\u0648\u062f\u062a\u0631 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">PropTypes<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">prop-types<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">MyComponent<\/span><span class=\"p\">({<\/span> <span class=\"nx\">name<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">MyComponent<\/span><span class=\"p\">.<\/span><span class=\"nx\">propTypes<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">PropTypes<\/span><span class=\"p\">.<\/span><span class=\"nx\">string<\/span><span class=\"p\">.<\/span><span class=\"nx\">isRequired<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"13_%DA%A9%D8%A7%D9%87%D9%86%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_%D8%A7%DB%8C%D8%A7%D9%84%D8%AA%DB%8C_%D8%A8%D8%A7_useReducer\"><\/span>\n<p>  13. <strong>\u06a9\u0627\u0647\u0646\u062f\u0647 \u0647\u0627\u06cc \u0627\u06cc\u0627\u0644\u062a\u06cc \u0628\u0627 <code>useReducer<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062d\u0627\u0644\u062a\u060c <code>useReducer<\/code> \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">initialState<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">count<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">reducer<\/span><span class=\"p\">(<\/span><span class=\"nx\">state<\/span><span class=\"p\">,<\/span> <span class=\"nx\">action<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">switch <\/span><span class=\"p\">(<\/span><span class=\"nx\">action<\/span><span class=\"p\">.<\/span><span class=\"nx\">type<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">case<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">increment<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"na\">count<\/span><span class=\"p\">:<\/span> <span class=\"nx\">state<\/span><span class=\"p\">.<\/span><span class=\"nx\">count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">};<\/span>\n    <span class=\"k\">case<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">decrement<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"na\">count<\/span><span class=\"p\">:<\/span> <span class=\"nx\">state<\/span><span class=\"p\">.<\/span><span class=\"nx\">count<\/span> <span class=\"o\">-<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">};<\/span>\n    <span class=\"nl\">default<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"nx\">state<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">state<\/span><span class=\"p\">,<\/span> <span class=\"nx\">dispatch<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useReducer<\/span><span class=\"p\">(<\/span><span class=\"nx\">reducer<\/span><span class=\"p\">,<\/span> <span class=\"nx\">initialState<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"14_useLayoutEffect_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AF%D8%B3%D8%AA%DA%A9%D8%A7%D8%B1%DB%8C_%D9%87%D8%A7%DB%8C_DOM\"><\/span>\n<p>  14. <strong><code>useLayoutEffect<\/code>  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0647\u0627\u06cc DOM<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0641\u06a9\u062a \u0647\u0627 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc DOM \u0627\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0631\u0646\u06af \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"nf\">useLayoutEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Layout effect<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">},<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"15_Logic_State_%D8%B1%D8%A7_%D8%A8%D8%A7_Context_%D9%88_%DA%A9%D9%BE%D8%B3%D9%88%D9%84%D9%87_%DA%A9%D9%86%DB%8C%D8%AF_useContext\"><\/span>\n<p>  15. <strong>Logic State \u0631\u0627 \u0628\u0627 Context \u0648 \u06a9\u067e\u0633\u0648\u0644\u0647 \u06a9\u0646\u06cc\u062f <code>useContext<\/code><\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u062c\u0627\u062f \u062d\u0627\u0644\u062a \u062c\u0647\u0627\u0646\u06cc \u0628\u062f\u0648\u0646 \u062d\u0641\u0627\u0631\u06cc \u067e\u0627\u06cc\u0647.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">ThemeContext<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nf\">createContext<\/span><span class=\"p\">();<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">MyComponent<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">theme<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useContext<\/span><span class=\"p\">(<\/span><span class=\"nx\">ThemeContext<\/span><span class=\"p\">);<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">style<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">{<\/span> <span class=\"na\">background<\/span><span class=\"p\">:<\/span> <span class=\"nx\">theme<\/span> <span class=\"p\">}<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Hello!<span class=\"p\"\/><span class=\"nt\">div<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"16_%D8%A7%D8%B2_%D8%AA%D8%B9%D8%A7%D8%B1%DB%8C%D9%81_%D8%AA%D9%88%D8%A7%D8%A8%D8%B9_%D8%AF%D8%B1%D9%88%D9%86_%D8%AE%D8%B7%DB%8C_%D8%AF%D8%B1_JSX_%D8%A7%D8%AC%D8%AA%D9%86%D8%A7%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  16. <strong>\u0627\u0632 \u062a\u0639\u0627\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u062f\u0631 JSX \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0639\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u0628\u0627\u0639\u062b \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0639\u0648\u0636\u060c \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062e\u0627\u0631\u062c \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">handleClick<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Clicked<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\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\">handleClick<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Click Me<span class=\"p\"\/><span class=\"nt\">button<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"17_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A7%DB%8C%D9%85%D9%86_%D8%A8%D9%87_%D8%A7%D9%85%D9%88%D8%A7%D9%84%D8%8C_%D8%A7%D8%B2_Chaining_%D8%A7%D8%AE%D8%AA%DB%8C%D8%A7%D8%B1%DB%8C_%D8%AF%D8%B1_JSX_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  17. <strong>\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u06cc\u0645\u0646 \u0628\u0647 \u0627\u0645\u0648\u0627\u0644\u060c \u0627\u0632 Chaining \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062f\u0631 JSX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0647\u06cc \u06cc\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">user<\/span><span class=\"p\">?.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">p<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"18_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF_key_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C_%D8%A7%D8%B2_%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA_%D8%B1%D9%86%D8%AF%D8%B1_%D9%85%D8%AC%D8%AF%D8%AF\"><\/span>\n<p>  18. <strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>key<\/code> \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0646\u062f\u0631 \u0645\u062c\u062f\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0645\u06cc\u0634\u0647 \u0647\u0646\u06af\u0627\u0645 \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0633\u062a \u0647\u0627 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">{<\/span><span class=\"nx\">items<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">item<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n  <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">item<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">item<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">div<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"19_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%A8%D9%87%D8%AA%D8%B1_%D9%88%D8%A7%D8%B1%D8%AF%D8%A7%D8%AA%D8%8C_%D9%82%D8%B7%D8%B9%D8%A7%D8%AA_%D8%B1%D8%A7_%D8%A8%D8%A7_%D8%B5%D8%A7%D8%AF%D8%B1%D8%A7%D8%AA_%D9%86%D8%A7%D9%85%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%D8%B4%D8%AF%D9%87_%D8%B5%D8%A7%D8%AF%D8%B1_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  19. <strong>\u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0628\u0647\u062a\u0631 \u0648\u0627\u0631\u062f\u0627\u062a\u060c \u0642\u0637\u0639\u0627\u062a \u0631\u0627 \u0628\u0627 \u0635\u0627\u062f\u0631\u0627\u062a \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0635\u0627\u062f\u0631 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0635\u0627\u062f\u0631\u0627\u062a \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0648\u0627\u0631\u062f\u0627\u062a \u0642\u0637\u0639\u0627\u062a \u062e\u0627\u0635 \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">ComponentA<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>A<span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;;<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">ComponentB<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>B<span class=\"p\"\/><span class=\"nt\">div<\/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>\u0633\u067e\u0633 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">ComponentA<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/Components<\/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<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"20_%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C_%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D9%82%D8%A7%D8%A8%D9%84_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%85%D8%AC%D8%AF%D8%AF_%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D9%85%D8%B1%D8%AA%D8%A8%D9%87_%D8%A8%D8%A7%D9%84%D8%A7%D8%AA%D8%B1_HOC\"><\/span>\n<p>  20. <strong>\u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0627\u062c\u0632\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f: \u0627\u062c\u0632\u0627\u06cc \u0645\u0631\u062a\u0628\u0647 \u0628\u0627\u0644\u0627\u062a\u0631 (HOC)<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u062c\u0632\u0627\u0621 \u0631\u0627 \u0628\u0627 HOC \u0628\u067e\u06cc\u0686\u06cc\u062f \u062a\u0627 \u0645\u0646\u0637\u0642 \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">withLogging<\/span><span class=\"p\">(<\/span><span class=\"nx\">WrappedComponent<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Wrapped<\/span><span class=\"p\">(<\/span><span class=\"nx\">props<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Component Rendered<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">WrappedComponent<\/span> <span class=\"si\">{<\/span><span class=\"p\">...<\/span><span class=\"nx\">props<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;;<\/span>\n  <span class=\"p\">};<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">MyComponentWithLogging<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">withLogging<\/span><span class=\"p\">(<\/span><span class=\"nx\">MyComponent<\/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<hr\/>\n<p>\u062a\u0633\u0644\u0637 \u0628\u0631 \u0627\u06cc\u0646 \u062a\u0631\u0641\u0646\u062f\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u06a9\u062f React \u0645\u062e\u062a\u0635\u0631\u060c \u062e\u0648\u0627\u0646\u0627 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f! \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0633\u0644\u0637 \u0628\u0631 \u0622\u0646 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a\u0646 \u0627\u0632 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0631\u0641\u0646\u062f\u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062e\u0644\u0627\u0635\u0647 \u0627\u06cc \u0627\u0632 \u0634\u062e\u0635\u06cc \u0645\u0646 \u0627\u0633\u062a favourite 20 React tricks \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":82066,"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-82065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82065","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=82065"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/82066"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=82065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=82065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=82065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}