ΠΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ Ρ ΡΠΊΠΎΠ²
These docs are old and wonβt be updated. Go to react.dev for the new React docs.
These new documentation pages teach React with Hooks:
Π₯ΡΠΊΠΈ β Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² React 16.8, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ React Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π₯ΡΠΊΠΈ β ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ. ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Ρ ΡΠΊΠ°Ρ . ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ Π±Π΅Π³Π»ΡΠΉ ΠΎΠ±Π·ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ React. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° Π΅ΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΡΠ»ΡΡΠΉ Π±Π»ΠΎΠΊ Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠ°Π»ΠΈΡΡ:
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Ρ ΡΠΊΠΈ Π² React, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ.
π Π₯ΡΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡΡ ΡΡΡΡΡΠΈΠΊ. ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΆΠΌΡΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΡΠΈΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ.
import React, { useState } from 'react';
function Example() {
// ΠΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ "count" const [count, setCount] = useState(0);
return (
<div>
<p>ΠΡ Π½Π°ΠΆΠ°Π»ΠΈ {count} ΡΠ°Π·</p>
<button onClick={() => setCount(count + 1)}>
ΠΠ°ΠΆΠΌΠΈ Π½Π° ΠΌΠ΅Π½Ρ
</button>
</div>
);
}
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, useState
β ΡΡΠΎ Ρ
ΡΠΊ (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ
ΡΠΊΠ° Π΄Π°Π½ΠΎ Π½ΠΈΠΆΠ΅). ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°Π΄Π΅Π»ΠΈΡΡ Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ. React Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π½Π΄Π΅ΡΠ°ΠΌΠΈ. ΠΡΠ·ΠΎΠ² useState
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² Ρ Π΄Π²ΡΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ½Π° ΡΡ
ΠΎΠΆΠ° Ρ this.setState
Π² ΠΊΠ»Π°ΡΡΠ°Ρ
, Π½ΠΎ Π½Π΅ ΡΠ»ΠΈΠ²Π°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΠΈ ΡΡΠ°ΡΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠ΅. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ
ΡΠΊΠ° useState
ΠΈ this.state
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ
ΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ useState
β ΡΡΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ β ΡΡΠΎ 0
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ ΡΡΡΡΡΠΈΠΊ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½ΡΠ»Ρ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ this.state
, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½ΠΎ, Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅.
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
Π₯ΡΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°.
function ExampleWithManyStates() {
// ΠΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΡ!
const [age, setAge] = useState(42);
const [fruit, setFruit] = useState('Π±Π°Π½Π°Π½');
const [todos, setTodos] = useState([{ text: 'ΠΠ·ΡΡΠΈΡΡ Ρ
ΡΠΊΠΈ' }]);
// ...
}
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ useState
. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΡΠ½ ΡΡΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π½Π΅Ρ Π² API useState
, React ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ useState
ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·, Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅. ΠΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.
Π§ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ Ρ ΡΠΊ?
Π₯ΡΠΊΠΈ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Β«ΠΏΠΎΠ΄ΡΠ΅ΠΏΠΈΡΡΡΡΒ» ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° React ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π₯ΡΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² β ΠΎΠ½ΠΈ Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ React Π±Π΅Π· ΠΊΠ»Π°ΡΡΠΎΠ². (ΠΡ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½ΠΎ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠΊΠΈ Π² ΡΠ²ΠΎΠΈΡ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ .)
React ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
Ρ
ΡΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ useState
. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Ρ
ΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π² Π΄ΡΡΠ³ΠΈΡ
ΡΠ²ΠΎΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
. ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Ρ
ΡΠΊΠΈ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
β‘οΈ Π₯ΡΠΊ ΡΡΡΠ΅ΠΊΡΠ°
ΠΠ°ΠΌ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ ΠΌΠ΅Π½ΡΡΡ DOM ΠΈΠ· React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡ ΡΠ°ΡΡΠ΅Π½ΠΈΠ²Π°Π΅ΠΌ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ Β«ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡΒ» (ΠΈΠ»ΠΈ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΠΎ Β«ΡΡΡΠ΅ΠΊΡΡΒ»), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΈΡ Π½Π΅Π»ΡΠ·Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½Π΄Π΅ΡΠ°.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Ρ
ΡΠΊΠ° ΡΡΡΠ΅ΠΊΡΠ° useEffect
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡ ΠΆΠ΅ ΡΠΎΠ»Ρ, ΡΡΠΎ ΠΈ componentDidMount
, componentDidUpdate
ΠΈ componentWillUnmount
Π² React-ΠΊΠ»Π°ΡΡΠ°Ρ
, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ² ΠΈΡ
Π² Π΅Π΄ΠΈΠ½ΡΠΉ API. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ useEffect
ΠΈ ΡΡΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ
ΡΠΊΠ° ΡΡΡΠ΅ΠΊΡΠ°.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ React ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ DOM:
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
// ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ componentDidMount ΠΈ componentDidUpdate: useEffect(() => { // ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ API Π±ΡΠ°ΡΠ·Π΅ΡΠ° document.title = `ΠΡ Π½Π°ΠΆΠ°Π»ΠΈ ${count} ΡΠ°Π·`; });
return (
<div>
<p>ΠΡ Π½Π°ΠΆΠ°Π»ΠΈ {count} ΡΠ°Π·</p>
<button onClick={() => setCount(count + 1)}>
ΠΠ°ΠΆΠΌΠΈ Π½Π° ΠΌΠ΅Π½Ρ
</button>
</div>
);
}
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ useEffect
, React ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Β«ΡΡΡΠ΅ΠΊΡΠΎΠΌΒ» ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² DOM. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΠ΅ΠΊΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Ρ Π½ΠΈΡ
Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Π³ΠΎ ΠΏΡΠΎΠΏΡΠ°ΠΌ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, React Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π½Π΄Π΅Ρ. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ
ΡΠΊΠ° ΡΡΡΠ΅ΠΊΡΠ°.
ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΈΠ· ΡΡΡΠ΅ΠΊΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π° ΡΠΎΠ±ΠΎΠΉ Β«ΡΠ±ΡΠΎΡΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΡΠ°ΡΡΡ Π΄ΡΡΠ³Π° Π² ΡΠ΅ΡΠΈ, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ±ΡΠΎΡ, ΠΎΡΠΏΠΈΡΡΠ²Π°ΡΡΡ ΠΎΡ Π½Π΅Π³ΠΎ.
import React, { useState, useEffect } from 'react';
function FriendStatus(props) {
const [isOnline, setIsOnline] = useState(null);
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
useEffect(() => { ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); return () => { ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange); }; });
if (isOnline === null) {
return 'ΠΠ°Π³ΡΡΠ·ΠΊΠ°...';
}
return isOnline ? 'Π ΡΠ΅ΡΠΈ' : 'ΠΠ΅ Π² ΡΠ΅ΡΠΈ';
}
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, React Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ChatAPI
ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ°Π·ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ React ΠΏΡΠΎΠΏΡΡΠΊΠ°Π» ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π΅ΡΠ»ΠΈ props.friend.id
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π² ChatAPI
, ΠΎΡΡΠ°Π»ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ useState
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅:
function FriendStatusWithCounter(props) {
const [count, setCount] = useState(0);
useEffect(() => { document.title = `ΠΡ Π½Π°ΠΆΠ°Π»ΠΈ ${count} ΡΠ°Π·`;
});
const [isOnline, setIsOnline] = useState(null);
useEffect(() => { ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
return () => {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
// ...
Π₯ΡΠΊΠΈ Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΏΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΌΠ΅Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ), Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°ΡΡ Π²Π°Ρ Π΄Π΅Π»ΠΈΡΡ Π²ΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ
useEffect
Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΊΠ° ΡΡΡΠ΅ΠΊΡΠ°.
βοΈ ΠΡΠ°Π²ΠΈΠ»Π° Ρ ΡΠΊΠΎΠ²
Π₯ΡΠΊΠΈ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ JavaScript, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π»Π°Π³Π°ΡΡ Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°:
- Π₯ΡΠΊΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΠ΅ Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ Ρ ΡΠΊΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ², ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
- Π₯ΡΠΊΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² React. ΠΠ΅ Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ Ρ ΡΠΊΠΈ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΡΡ JavaScript-ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠΊΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Ρ ΡΠΊΠΈ β ΡΡΠΎ Π²Π°ΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Ρ ΡΠΊΠΈ. ΠΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ Π½ΠΈΡ Π΄Π°Π»Π΅Π΅.
ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Π»ΠΈΠ½ΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ». ΠΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΊΠΎΠ².
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΡΠ°Π²ΠΈΠ»Π° Ρ ΡΠΊΠΎΠ².
π‘ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Ρ ΡΠΊΠΎΠ²
ΠΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ . Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈ ΡΠ΅Π½Π΄Π΅Ρ-ΠΏΡΠΎΠΏΡΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Ρ ΡΠΊΠΎΠ² ΡΡΠ° Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π±Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Π²Π°ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ.
Π Π°Π½Π΅Π΅ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ FriendStatus
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π» Ρ
ΡΠΊΠΈ useState
ΠΈ useEffect
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΡΠ°ΡΡΡ Π΄ΡΡΠ³Π° Π² ΡΠ΅ΡΠΈ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π΅ΡΡ ΡΠ°Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΎΠΉ, Π½ΠΎ ΡΠΆΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΡΠΌ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Ρ
ΡΠΊ useFriendStatus
import React, { useState, useEffect } from 'react';
function useFriendStatus(friendID) { const [isOnline, setIsOnline] = useState(null);
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
useEffect(() => {
ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
return () => {
ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
};
});
return isOnline;
}
Π₯ΡΠΊ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ friendID
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π² ΡΠ΅ΡΠΈ Π½Π°Ρ Π΄ΡΡΠ³ ΠΈΠ»ΠΈ Π½Π΅Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Ρ ΡΠΊ Π² ΠΎΠ±ΠΎΠΈΡ Π½Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ :
function FriendStatus(props) {
const isOnline = useFriendStatus(props.friend.id);
if (isOnline === null) {
return 'ΠΠ°Π³ΡΡΠ·ΠΊΠ°...';
}
return isOnline ? 'Π ΡΠ΅ΡΠΈ' : 'ΠΠ΅ Π² ΡΠ΅ΡΠΈ';
}
function FriendListItem(props) {
const isOnline = useFriendStatus(props.friend.id);
return (
<li style={{ color: isOnline ? 'green' : 'black' }}>
{props.friend.name}
</li>
);
}
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π₯ΡΠΊΠΈ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Ρ ΡΠΊΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Ρ ΡΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Ρ
ΡΠΊΠΈ β ΡΡΠΎ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ βuse
β ΠΈ ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ Ρ
ΡΠΊΠΈ, ΠΌΡ ΡΠ°ΡΡΠ΅Π½ΠΈΠ²Π°Π΅ΠΌ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Ρ
ΡΠΊ. ΠΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ useSomething
ΠΏΡΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Ρ
ΡΠΊΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΡΠ΅ΠΌΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ Π»ΠΈΠ½ΡΠ΅ΡΠ° Π½Π°ΠΉΡΠΈ Π±Π°Π³ΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Ρ
ΡΠΊΠΈ.
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π², ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Ρ ΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΎΡΠΌΠ°ΠΌΠΈ, Π°Π½ΠΈΠΌΠ°ΡΠΈΡ, Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ, ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ , ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΡΠΌΠ°Π»ΠΈ. ΠΡ Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Ρ ΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ React ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Ρ ΡΠΊΠΎΠ².
π ΠΡΡΠ³ΠΈΠ΅ Ρ ΡΠΊΠΈ
ΠΡΡΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
Ρ
ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ useContext
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ React Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
function Example() {
const locale = useContext(LocaleContext); const theme = useContext(ThemeContext); // ...
}
Π Ρ
ΡΠΊ useReducer
Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΄ΡΡΠ΅ΡΠ°.
function Todos() {
const [todos, dispatch] = useReducer(todosReducer); // ...
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Ρ ΡΠΊΠ°Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ API-ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° Ρ ΡΠΊΠΎΠ².
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅?
Π€ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅ΠΌ ΡΠΎΡΠΎΠΏΠΈΡΡΡΡ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ Π»Π°Π΄ΠΈΠΌ ΠΏΡΠ»! ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΡΠΌ-Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΡΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Ρ ΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ API-ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ Ρ ΡΠΊΠΎΠ² ΠΈ FAQ Ρ ΡΠΊΠΎΠ².
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΠ΅ ΠΌΠΈΠΌΠΎ Π²ΡΡΡΠΏΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Ρ ΡΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.