Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ React, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² React, ΡΠΎ ΠΌΡ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΡΡΠ° Π³Π»Π°Π²Π° Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
ΠΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠΈΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌ Π² Π²Π°ΡΠΈΡ React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
Top-Level Folders
ΠΠΎΡΠ»Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ React Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ:
packages
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊpackage.json
) ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ (ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°src
) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ React. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°Ρsrc
Π²Π½ΡΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.fixtures
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠ΅ΡΠΎΠ².build
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ React. ΠΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π½ΠΎ ΠΎΠ½ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΎΠ±Π΅ΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ Π²Π΅ΡΡ Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΏΠ°ΠΏΠΎΠΊ. ΠΠΎ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΠ΅ΡΡ Ρ Π½ΠΈΠΌΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.
Π’Π΅ΡΡΡ
Π£ Π½Π°Ρ Π½Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡ
Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΡΠ½ΠΈΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΈΡ
Π² ΠΏΠ°ΠΏΠΊΡ __tests__
, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΡΡ Π΄Π»Ρ setInnerHTML.js
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² __tests__/setInnerHTML-test.js
.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΡ
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² React Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠ΅ΡΠ΅Π· console.error
.
if (__DEV__) {
console.error('Π§ΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ.');
}
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²ΡΡΠ΅Π·Π°Π½Ρ ΠΈΠ· ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ invariant
:
var invariant = require('invariant');
invariant(
2 + 2 === 4,
'Π’Ρ Π½Π΅ ΠΏΡΠΎΠΉΠ΄ΡΡΡ!'
);
ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²Π½ΡΡΡΠΈ invariant
ΡΠ°Π²Π½ΠΎ false
, ΡΠΎΠ³Π΄Π° Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
Β«ΠΠ½Π²Π°ΡΠΈΠ°Π½ΡΡΒ» β ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΠ°Π·Π°ΡΡ: Β«Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΡΠΈΠ½Π½ΠΎΒ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΠΎ Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ± ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡΡ (assertion).
ΠΠ°ΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π° ΠΈΠΌΠ΅Π»ΠΈ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ . Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π±Π°Π½Π΄Π»Π°.
Π Π΅ΠΆΠΈΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ __DEV__
, ΡΡΠΎΠ±Ρ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π» ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° process.env.NODE_ENV !== 'production'
, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ±ΠΎΡΠΊΠ΅ CommonJS.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ true
Π² Π½Π΅ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅, Π° Π² ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ΅Π·Π°Π½ Π²Π΅ΡΡ Π±Π»ΠΎΠΊ Π²ΠΌΠ΅ΡΡΠ΅ Ρ if
.
if (__DEV__) {
// ΠΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
}
Flow
ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Flow. Π€Π°ΠΉΠ»Ρ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @flow
Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ, Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π½ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΈΠΏΠΎΠ².
ΠΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΏΡΠ»Π» ΡΠ΅ΠΊΠ²Π΅ΡΡΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Flow Π² ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
ReactRef.detachRefs = function(
instance: ReactInstance,
element: ReactElement | string | number | null | false,
): void {
// ...
}
ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Flow. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ yarn
flow
, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ².
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
React ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ, Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠ°Π»ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
Π―Π΄ΡΠΎ React
Π―Π΄ΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²Π΅ΡΡ Π²Π΅ΡΡ
Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ API React
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
React.createElement()
React.Component
React.Children
Π―Π΄ΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ API Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎ-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ React DOM ΠΈ React Native.
ΠΠΎΠ΄ ΡΠ΄ΡΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ packages/react
. ΠΠ½ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² npm Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ° react
. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠ° Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ React
ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ react.js
.
Π Π΅Π½Π΄Π΅ΡΠ΅ΡΡ
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ React ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ Π΄Π»Ρ DOM, Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π±ΡΠ» Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ React Native. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅Π½Π΄Π΅ΡΠ΅ΡΠ°Ρ .
Π Π΅Π½Π΄Π΅ΡΠ΅ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ React-Π΄Π΅ΡΠ΅Π²ΠΎ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎ-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄.
ΠΠ½ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ packages/
:
- React DOM Renderer ΡΠ΅Π½Π΄Π΅ΡΠΈΡ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² DOM. ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ
ReactDOM
API ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρreact-dom
ΠΈΠ· npm ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±Π°Π½Π΄Π»react-dom.js
, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡΠΈΠΉ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡReactDOM
. - React Native Renderer ΡΠ΅Π½Π΄Π΅ΡΠΈΡ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ React Native.
- React Test Renderer ΡΠ΅Π½Π΄Π΅ΡΠΈΡ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² JSON-Π΄Π΅ΡΠ΅Π²ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ½ΠΈΠΌΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Jest ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ react-test-renderer Π² npm.
ΠΡ Π½Π°ΡΠ°Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠ΅Ρ react-art
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π½ΡΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ GitHub-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ
react-native-renderer
β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΎΠ½ΠΊΠΈΠΉ ΡΠ»ΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡ React Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ React Native. ΠΠ»Π°ΡΡΠΎΡΠΌΠΎ-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ React Native Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ.
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»ΠΈ
ΠΠ°ΠΆΠ΅ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅ΡΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ React DOM ΠΈ React Native, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΈ ΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΊΠΎΠ΄. Π React ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΡ ΡΠ°ΡΡΡ Β«ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»ΡΒ». ΠΠΎΠ³Π΄Π° Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ setState()
, ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ render()
Π² Π΄Π΅ΡΠ΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π»ΠΈΠ±ΠΎ ΡΠ°Π·ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ ΠΈΡ
.
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ API. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠ΅Π½Π΄Π΅ΡΠ΅ΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ React DOM ΠΈ React Native.
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Ρ Stack
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Ρ Β«StackΒ» β ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π² React 15 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ . ΠΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½ΠΎ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ΠΉ Π³Π»Π°Π²Π΅.
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Ρ Fiber
Π ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Π΅ Β«FiberΒ» ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π΄Π°Π²Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠ΅ΡΡ Π² ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Π΅ Stack.
ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ΅Π»ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ:
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΠΌΡΡ Π·Π°Π΄Π°Ρ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ.
- ΠΠ°ΡΡ Π·Π°Π΄Π°ΡΠ°ΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ, ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
- ΠΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΏΠ΅ΡΡΠ΄ ΠΈ Π½Π°Π·Π°Π΄ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ ΠΈ Π΄Π΅ΡΡΠΌΠΈ Π² ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ΅ React.
- ΠΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π°
render()
. - Π£Π»ΡΡΡΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ React Fiber Π·Π΄Π΅ΡΡ ΠΈ Π·Π΄Π΅ΡΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π²ΠΊΠ»ΡΡΡΠ½ Π² React 16, Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π°.
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ packages/react-reconciler
.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π² React ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ»ΠΎΠΉ, ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ. ΠΠ³ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ packages/react-dom/src/events
.
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅?
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Ρ (Π²Π΅ΡΡΠΈΠΉ React 15 ΠΈ ΡΠ°Π½Π΅Π΅) Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. ΠΠ»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΡ Π΅ΡΡ Π½Π΅ ΠΏΠΈΡΠ°Π»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.