ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ?
ΠΠΎΠΏΡΠΎΡ ΠΏΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ API ΠΎ useEffect
ΠΠ°ΠΊΠΎΠ²ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅?
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ useEffect
Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π² ΡΠ°ΠΊΠΈΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ° Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°Π±ΡΠ²Π°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ°ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², ΠΊΠ°ΠΊ Ρ. Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ (ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ) ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ
Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ useEffect
ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅. Π§ΡΠΎ ΠΏΠΎΡΠ»ΡΠΆΠΈΠ»ΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ» Π΄Π΅ΡΠΎΠ»Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·?
ΠΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ API:
useEffect(
() => {
// do something
},
[/* dependency list */]
);
useEffect
Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² []
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Ρ.Π΅. Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·). ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ, ΡΡΠΎ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π·Π°ΠΏΡΡΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π² useEffect
ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅.
Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ (ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ) ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ
useEffect
ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅. Π§ΡΠΎ ΠΏΠΎΡΠ»ΡΠΆΠΈΠ»ΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ» Π΄Π΅ΡΠΎΠ»Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·?
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² React ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ useState
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, POST Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ).
useEffect
.Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ / ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
Π’Π΅ΠΊΡΡΠΈΠΉ API ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ:
componentDidMount
+ componentDidUpdate
.componentDidMount
.this.props
ΠΈ prevProps
Π² API ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°.ΠΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π²Π°ΠΌΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Β«ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ» (ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ²Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ) ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΡ .
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· ΡΡΠΎΠ³ΠΎ. Π ΠΏΠΎΠΊΠ° ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ ESLint, ΡΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ. π