CodeRoll | Frontend
Open in Telegram
OZ β ΠΡΡΡΠ΅Π΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° / IT ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΡΡΡΡ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ β ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° JS, HTML, CSS, React, Vue,Angular ΠΡΠΏΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: https://telega.in/c/coderoll Π§Π°Ρ: https://t.me/coderoll_chat ΠΠΎ Π²ΡΠ΅ΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ΄Π° - @yankovsky_ads
Show more4 114
Subscribers
-124 hours
-177 days
-4230 days
Posts Archive
4 114
βοΈ ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ React: Π₯ΡΠΊΠΈ, ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ! ΠΠΎΡ ΠΏΠΎΡΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ³Π»ΡΠ±Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΠΌΠ°ΠΌ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°ΠΌ Π² React.
βοΈ ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ React: Π₯ΡΠΊΠΈ, ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
π₯ ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ React, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
π React Hooks: Π Π΅Π²ΠΎΠ»ΡΡΠΈΡ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ
Hooks, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² React 16.8, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
- useState: ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
- useEffect: Π£ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ, API-Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ DOM.
- useMemo ΠΈ useCallback: ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΡΠ΅Π½Π΄Π΅ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
const MyComponent = () => {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]);
const increment = useCallback(() => setCount(count + 1), [count]);
return <button onClick={increment}>Click me</button>;
};
π React Context: Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ) ΡΠ΅ΡΠ΅Π· Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠΏΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°: const MyContext = React.createContext(defaultValue);
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
: const value = useContext(MyContext);
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ "prop drilling", Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π΅Π³ΠΎ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ»ΠΎΠΆΠ½ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
β‘οΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: ΠΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΡ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Concurrent Mode
ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° React Π²Π°ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ
Π°ΡΠΏΠ΅ΠΊΡΠΎΠ²:
ΠΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΡ Ρ React.memo, useMemo, useCallback β ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΡΠ΅Π½Π΄Π΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΏΡΡ ΠΈΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ.
Code Splitting Ρ ΠΏΠΎΠΌΠΎΡΡΡ React.lazy ΠΈ Suspense β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ½ΠΈΠΆΠ°Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Concurrent Mode β Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ React Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°Π΄Π°ΡΠΈ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.4 114
π 5 must-read ΠΊΠ½ΠΈΠ³ ΠΏΠΎ JavaScript
π― JavaScript β ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ, ΠΈ ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π½Π° Π³ΡΠ΅Π±Π½Π΅ Π²ΠΎΠ»Π½Ρ, Π²Π°ΠΆΠ½ΠΎ ΡΠ³Π»ΡΠ±Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ. ΠΠΎΡ 5 ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ:
"You Don't Know JS" (Kyle Simpson) β ΡΠ΅ΡΠΈΡ ΠΈΠ· ΡΠ΅ΡΡΠΈ ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π»ΡΠ±ΠΎΠΊΠΎ ΠΏΠΎΠ³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ·ΡΠΊΠ°.
"JavaScript: The Good Parts" (Douglas Crockford) β ΠΊΠ»Π°ΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΡΠΈΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΡΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄.
"Eloquent JavaScript" (Marijn Haverbeke) β ΠΊΠ½ΠΈΠ³Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡ JavaScript, Π° ΠΎΠΏΡΡΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ³Π»ΡΠ±ΠΈΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ.
"JavaScript: The Definitive Guide" (David Flanagan) β ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ "Π±ΠΈΠ±Π»ΠΈΠ΅ΠΉ JavaScript".
π ΠΡΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΡΠΈΡΡ Π½Π°Π²ΡΠΊΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ JavaScript ΠΈΠ·Π½ΡΡΡΠΈ. Π§ΡΠ΅Π½ΠΈΠ΅ β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ!
4 114
π§ CSS Grid β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΠΌΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ
π¨ CSS Grid β ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΠΌΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π΅ΡΡΡΠΊΠΎΠΉ.
π‘ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ:
- Grid Container β ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ - ΡΠ΅ΡΠΊΠ°.
- Grid Items β ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
- Grid Lines β Π»ΠΈΠ½ΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΡΠ΅ΡΠΊΠΈ.
π ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΌΠ°ΠΊΠ΅ΡΠ° Ρ Grid:
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
}
.item {
background-color: #f4f4f4;
padding: 20px;
text-align: center;
}
β© Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΠ°ΠΊΠ΅Ρ Ρ ΡΡΠ΅ΠΌΡ ΡΠ°Π²Π½ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ. CSS Grid ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΡ
ΠΌΠ°ΠΊΠ΅ΡΠΎΠ² Π±Π΅Π· ΡΠ»ΠΎΠΆΠ½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
π ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ:
CSS Grid Garden β ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΈΠ³ΡΠ° Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ CSS Grid. ΠΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ΅ΠΎΡΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π² ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
MDN Web Docs: CSS Grid Layout β ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΡ Mozilla. ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΠ²ΠΎΠΉΡΡΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ CSS Grid, Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ.4 114
ΠΡΠ»ΠΈΡΠΈΡ Function components ΠΎΡ class components?
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΡΡΠΎ:
1) ΠΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
2) ΠΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°
3) ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠΈΠΉ
Π ΡΠ°ΠΌΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠ½ΠΊΡ, ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ, ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ React ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅Π΅ React Π² Ρ
ΡΠΊΠ°Ρ
.
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΡΡΡ ΠΏΡΠΎ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ?
ΠΠ°, Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΡΡΠΈ Π½Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΎ error boundary, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π½ΠΎ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠ²Π΅Ρ Π΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΉΡΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ React ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Ρ error boundary, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ΄ ΡΠ΅Π±Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ°ΠΌ Π½Π΅Ρ.
ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Error boundary, Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ https://ru.react.js.org/docs/error-boundaries.html
4 114
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΠΡΠ° ΡΡΠ°ΡΡΡ - ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΡΡΠ΅ΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΠΉ Chrome. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΎΠ½ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π°Ρ
, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π³Π΅ΠΌΠΎΡΡΠΎΠΉ - ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ ΡΠ°ΠΌ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ°ΡΡΠΉ
Π‘ΡΡΠ»ΠΊΠ°
#ΡΡΠ°ΡΡΠΈ
4 114
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΡΠΈΠ±ΡΡ key? ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
Key ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ React ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Ρ. Key Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅.
Key Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅:
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
const howUseKey = () => {
const array = [1, 2, 3];
return (
<div>
{array.map((item) => (
<div key={item}>{item}</div>
))}
</div>
);
};
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ (ΠΡΠΈΠ³Π»ΡΠ΄ΠΈΡΠ΅ΡΡ ΠΊ its a trap):
const howNotUseKey = () => {
const array = [1, 2, 3];
return (
<div>
{array.map((item) => (
<div className="its a trap">
<div key={item}>{item}</div>
</div>
))}
</div>
);
};
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ Π±Π°Π³ΠΈ. ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ id ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎ key ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ4 114
ΠΠ°ΡΠΈΠΌ Π±ΠΈΠ»Π΅Ρ Π² ΠΌΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ IT π«
ΠΡ ΡΠ΅Π±Ρ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ JS+React ΠΎΡ Π³ΠΎΠ΄Π° ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π₯ΠΎΠ»Π΄ΠΈΠ½Π³Π° Π’1 β ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π»ΠΈΠ΄Π΅ΡΠΎΠ² ΡΠΎΡΡΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΠΠ’-ΡΡΠ½ΠΊΠ°, Π² ΠΏΠΎΡΡΡΠ΅Π»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ 800+ Π²ΡΡΠΎΠΊΠΎΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ 70+ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈ ΡΡΠ»ΡΠ³.
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΡ Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ² Π² ΠΡΠΊΡΡΡΡΠ΅ ΡΠΊΠΎΠ»Ρ Π’1 ΠΈ ΠΏΡΠΎΠΊΠ°ΡΠ°ΠΉ Π½Π°Π²ΡΠΊΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π·Π° 1 ΠΌΠ΅ΡΡΡ. ΠΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡΡΠ΅Ρ ΠΎΡ Π’1 π ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΡΡ-ΡΡΠ΅ΠΊ Π΄ΠΎ ΠΌΠΈΠ΄Π»Π° Π² Π±ΠΈΠ³ΡΠ΅Ρ
Π΅.
ΠΡΠ΅Π³ΠΎ Π·Π° ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΌΡ Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ 500+ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ². Π£ΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΡΠΈΠ½ΡΠ΅Ρ
-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ’-ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΆΠ΄ΡΡ Π² ΡΠ½ΠΈΡΠ°Ρ
ΠΎΠ±Π»Π°ΡΠ½ΡΡ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΠ-ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ°Π»ΡΠΈΠ½Π³Π°.
βοΈ ΠΡΡΡΡΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅: 1 ΠΌΠ΅ΡΡΡ.
π» ΠΠΈΠ±ΠΊΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ: Π²ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΎΠ½Π»Π°ΠΉΠ½, Π·Π°Π½ΡΡΠΈΡ ΠΏΠΎ Π²Π΅ΡΠ΅ΡΠ°ΠΌ.
π Π Π°Π±ΠΎΡΠ° Π² Π’1 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ ΡΠ΅Ρ-ΡΠΈΠΈ Π Π€ ΠΈ ΠΠ΅Π»Π°ΡΡΡΠΈ.
Π’Ρ Ρ Π½Π°ΠΌΠΈ? Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄Π°Π²Π°ΠΉ Π·Π°ΡΠ²ΠΊΡ Π΄ΠΎ 24 ΠΈΡΠ»Ρ!
Π‘ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π° β 29 ΠΈΡΠ»Ρ.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π’1". ΠΠΠ 7720484492.
4 114
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΎΠΊ? React Custom Hook: useRenderCount
Π ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌΡΡ Π² ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΠΌΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Ρ
ΡΠΊΠΎΠ² React, ΠΎΡΠΊΡΡΠ²Π°Ρ Π΄Π»Ρ ΡΠ΅Π±Ρ ΠΈΡ
ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° Ρ
ΡΠΊΠ΅ useRenderCount, ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ
Ρ
ΡΠΊΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Ρ
ΡΠΊΠΎΠ² React.
Π‘ΡΡΠ»ΠΊΠ°
#react
4 114
JavaScript: ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. Π§Π°ΡΡΡ 1
Π ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΌ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ°ΠΌΡΡ
ΠΏΡΠΎΡΡΡΡ
ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
ΡΡΡΡΠΊΡΡΡΠ°Ρ
Π΄Π°Π½Π½ΡΡ
: ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠΌ ΠΈ Π΄Π²ΡΡΠ²ΡΠ·Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ°Ρ
, ΡΡΠ΅ΠΊΠ΅ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
ΠΠΎΠ΄, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΡΡΠΎΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠ°ΡΡΡΡ
ΡΠ΅ΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
Π‘ΡΡΠ»ΠΊΠ°
#js
4 114
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ Front End Ρ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ. Promise Pool
Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ Π·Π°Π΄Π°ΡΡ Promise Pool (Leetcode 2636)
ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ functions ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠ»Π° n. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ promisePool. ΠΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Promise, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ Π²ΡΠ΅ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ function.
Π‘ΡΡΠ»ΠΊΠ°
#js
4 114
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ Front End Ρ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ. Throttle
ΠΠ°Π΄Π°ΡΠ° Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Throttling ΡΠ°ΡΡΠΎ Π΄Π°Π΅ΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΏΠΎ front end ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ throttle, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ callback ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. ΠΡΠ·ΠΎΠ² throttle() Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ callback ΡΡΠ½ΠΊΡΠΈΡ.
Π‘ΡΡΠ»ΠΊΠ°
#js
4 114
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΡΠ²Π΅ΡΡ
Object.entries(person) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: [ [ 'name', 'John' ], [ 'age', 30 ] ]. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΠ»Π° for-of ΠΌΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° - Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Ρ Π² ΡΠΈΠΊΠ»Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ const [x, y]. x ΡΠ°Π²Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π΅, y - Π²ΡΠΎΡΠΎΠΌΡ. ΠΠ΅ΡΠ²ΡΠΌ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ [ "name", "John" ], Π³Π΄Π΅ x ΡΠ°Π²Π½ΡΠ΅ΡΡΡ name, Π° y - John. ΠΡΠΎΡΡΠΌ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ [ "age", 30 ], Π³Π΄Π΅ x ΡΠ°Π²Π½ΡΠ΅ΡΡΡ age, Π° y - 30.
4 114
const person = {
name: "John",
age: 30
}
for (const [x, y] of Object.entries(person)) {
console.log(x, y)
}4 114
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° React Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ΅Ρ
Π½ΠΈΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² React:
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ React.memo
React.memo ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ
ΡΠ΅Π½Π΄Π΅ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π΅ΡΠ»ΠΈ ΠΈΡ
ΠΏΡΠΎΠΏΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ.
const MyComponent = React.memo(function MyComponent(props) {
// Component logic
});
2. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ useMemo ΠΈ useCallback
ΠΡΠΈ Ρ
ΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΆΠ΅Π»ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅.
useMemo ΠΌΠ΅ΠΌΠΎΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
useCallback ΠΌΠ΅ΠΌΠΎΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ:
const memoizedCallback = useCallback(() => {
doSomething(a, b);
}, [a, b]);
3. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (Code Splitting)
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ React.lazy ΠΈ Suspense.
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
<Suspense fallback={<div>Loading...</div>}>
<OtherComponent />
</Suspense>
);
}
4. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° (Dynamic Import)
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π°Π½Π΄Π»Π°.
import(/* webpackChunkName: "moduleA" */ './moduleA').then(module => {
// ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ
});
5. ΠΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΡΡΠ΅Π»ΠΎΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΏΡΠΎΠΏΡΠ°Ρ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°ΠΌ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
// ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
<MyComponent onClick={() => doSomething()} />
// ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅:
const handleClick = useCallback(() => doSomething(), []);
<MyComponent onClick={handleClick} />
6. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ shouldComponentUpdate ΠΈ PureComponent
ΠΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ shouldComponentUpdate ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PureComponent, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΏΡΠΎΠ² ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
class MyComponent extends React.PureComponent {
render() {
return <div>{this.props.value}</div>;
}
}
7. ΠΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΎΠ².
const [state, setState] = useState({
name: '',
age: 0,
address: ''
});
// ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ:
setState(prevState => ({ ...prevState, name: 'John' }));
8. ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ React Profiler, Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ·ΠΊΠΈΡ
ΠΌΠ΅ΡΡ.
9. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΠ°Π³ΡΡΠΆΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ lazy loading Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³.
10. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ react-window ΠΈΠ»ΠΈ react-virtualized Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠΏΠΈΡΠΊΠΎΠ².
ΠΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° React.4 114
await vs yield Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Effection 3.0 ΠΈ React
18 Π΄Π΅ΠΊΠ°Π±ΡΡ 2023 Π³ΠΎΠ΄Π° Π²ΡΡΠ΅Π» ΡΠ΅Π»ΠΈΠ· Effection 3.0 - ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π° async/await Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°Ρ
(Structured Concurrency and Effects for JavaScript).
Π ΡΡΠ°ΡΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°Ρ
ΠΈ async/await ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Effection Π² React Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
- Race condition
- AbortController
- Clean up
- Debounce
Π‘ΡΡΠ»ΠΊΠ°
#ΡΡΠ°ΡΡΠΈ
4 114
React.js: ΠΠ½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ useReducer, Axios ΠΈ JSON Server Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅ΡΡ ΠΊ React, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ β ΡΡΠΎ Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅, ΠΈ Ρ ΡΡΠΈΠΌ ΡΡΡΠ΄Π½ΠΎ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ΅ΡΠΈΠ» ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ useReducer.
Π ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠΎΠΊ API ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ JSON Server, Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ axios Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° API ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Ρ
ΡΠΊΠΎΠΌ useReducer Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ.
Π‘ΡΡΠ»ΠΊΠ°
#react
4 114
ΠΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ CSS (mod, round) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Sprite Sheet Π±Π΅Π· JS
Sprite Sheet β ΡΡΠΎ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° Π² Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠ°Π΄ΡΠΎΠ² Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ, Ρ
ΡΠ°Π½ΡΡΠΈΡ
ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΊΠ°Π΄ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π‘ΡΡΠ»ΠΊΠ°
#css
4 114
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΡΠ²Π΅ΡΡ
ΠΠ΅ΡΠΎΠ΄ push Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π»ΠΈΠ½Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π° Π½Π΅ ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ². Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ newList ΡΠ°Π²Π½ΡΠΌ [1, 2, 3].push(4), ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ newList ΡΠ°Π²Π½ΡΠΌ 4. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ push Π΄Π»Ρ newList. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ newList ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ 4, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ push - Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ TypeError.
