React Π±Π΅Π· ES6
These docs are old and wonβt be updated. Go to react.dev for the new React docs.
ΠΠ°Π·Π²ΠΈΡΠ°ΠΉ, Π²ΠΈ Π± ΠΎΠ³ΠΎΠ»ΠΎΡΠΈΠ»ΠΈ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ Π²ΠΈΠ³Π»ΡΠ΄Ρ JavaScript-ΠΊΠ»Π°ΡΡ:
class Greeting extends React.Component {
render() {
return <h1>ΠΡΠΈΠ²ΡΡ, {this.props.name}</h1>;
}
}
Π―ΠΊΡΠΎ Π²ΠΈ Π΄ΠΎΡΡ Π½Π΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠ΅ ES6, Π²ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°ΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ create-react-class
:
var createReactClass = require('create-react-class');
var Greeting = createReactClass({
render: function() {
return <h1>ΠΡΠΈΠ²ΡΡ, {this.props.name}</h1>;
}
});
API ES6-ΠΊΠ»Π°ΡΡΠ² ΡΡ
ΠΎΠΆΠΈΠΉ Π΄ΠΎ createReactClass()
Π·Π° Π΄Π΅ΡΠΊΠΈΠΌΠΈ Π²ΠΈΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ.
ΠΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π½Ρ Π²Π»Π°ΡΡΠΈΠ²ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠ° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΡΡΠ½ΠΊΡΡΠΉ ΡΠ° ΠΊΠ»Π°ΡΡΠ² ES6 defaultProps
ΠΎΠ³ΠΎΠ»ΠΎΡΡΡΡΡΡΡ ΡΠΊ Π²Π»Π°ΡΡΠΈΠ²ΡΡΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
class Greeting extends React.Component {
// ...
}
Greeting.defaultProps = {
name: 'ΠΠ°ΡΡΡ'
};
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠΈ createReactClass()
, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ getDefaultProps()
ΡΠΊ ΡΡΠ½ΠΊΡΡΡ Π² ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎΠΌΡ ΠΎΠ±βΡΠΊΡΡ:
var Greeting = createReactClass({
getDefaultProps: function() {
return {
name: 'ΠΠ°ΡΡΡ'
};
},
// ...
});
ΠΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ ΠΏΠΎΡΠ°ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠΈ ES6-ΠΊΠ»Π°ΡΠΈ, Π²ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΠΏΠΎΡΠ°ΡΠΊΠΎΠ²ΠΈΠΉ ΡΡΠ°Π½ ΡΠ΅ΡΠ΅Π· this.state
Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ:
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = {count: props.initialCount};
}
// ...
}
Π createReactClass()
Π²ΠΈ ΠΌΠ°ΡΡΠ΅ ΡΡΠ²ΠΎΡΠΈΡΠΈ ΠΎΠΊΡΠ΅ΠΌΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ getInitialState
, ΡΠΊΠΈΠΉ ΠΏΠΎΠ²Π΅ΡΠ½Π΅ ΠΏΠΎΡΠ°ΡΠΊΠΎΠ²ΠΈΠΉ ΡΡΠ°Π½:
var Counter = createReactClass({
getInitialState: function() {
return {count: this.props.initialCount};
},
// ...
});
ΠΠ²ΡΠΎΠΏΡΠΈΠ²βΡΠ·ΠΊΠ°
Π£ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½ΠΈΡ
ΡΠΊ ES6-ΠΊΠ»Π°ΡΠΈ, ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΄ΠΎΡΡΠΈΠΌΡΡΡΡΡΡ ΡΠ°ΠΊΠΎΡ ΠΆ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ, ΡΠΊ Ρ Π·Π²ΠΈΡΠ°ΠΉΠ½Ρ ES6-ΠΊΠ»Π°ΡΠΈ. Π¦Π΅ ΠΎΠ·Π½Π°ΡΠ°Ρ, ΡΠΎ Π²ΠΎΠ½ΠΈ Π½Π΅ Π²ΠΈΠΊΠΎΠ½ΡΡΡΡ ΠΏΡΠΈΠ²βΡΠ·ΠΊΡ this
Π΄ΠΎ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ Π±ΡΠ΄Π΅ ΡΠ²Π½ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°ΡΠΈ .bind(this)
Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ:
class SayHello extends React.Component {
constructor(props) {
super(props);
this.state = {message: 'ΠΡΠΈΠ²ΡΡ!'};
// Π¦Π΅ΠΉ ΡΡΠ΄ΠΎΠΊ -- Π΄ΡΠΆΠ΅ Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ!
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
alert(this.state.message);
}
render() {
// ΠΡΠΊΡΠ»ΡΠΊΠΈ `this.handleClick` Ρ ΠΏΡΠΈΠ²'ΡΠ·Π°Π½ΠΈΠΌ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΡΠΎ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΉΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°ΡΠΈ ΡΠΊ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊ ΠΏΠΎΠ΄ΡΡ.
return (
<button onClick={this.handleClick}>
Π‘ΠΊΠ°ΠΆΠΈ "ΠΏΡΠΈΠ²ΡΡ"
</button>
);
}
}
Π Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½ΡΠΌ createReactClass()
ΡΠ΅ Π½Π΅ΠΎΠ±ΠΎΠ²βΡΠ·ΠΊΠΎΠ²ΠΎ, ΠΎΡΠΊΡΠ»ΡΠΊΠΈ ΡΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ²βΡΠ·ΡΡ Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΄ΠΎ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
var SayHello = createReactClass({
getInitialState: function() {
return {message: 'ΠΡΠΈΠ²ΡΡ!'};
},
handleClick: function() {
alert(this.state.message);
},
render: function() {
return (
<button onClick={this.handleClick}>
Π‘ΠΊΠ°ΠΆΠΈ "ΠΏΡΠΈΠ²ΡΡ"
</button>
);
}
});
Π¦Π΅ ΠΎΠ·Π½Π°ΡΠ°Ρ, ΡΠΎ ES6-ΠΊΠ»Π°ΡΠΈ ΠΏΠΈΡΡΡΡΡΡ ΡΠ· ΡΡΠΎΡ ΠΈ Π±ΡΠ»ΡΡ ΡΠ½ΡΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ² ΠΏΠΎΠ΄ΡΠΉ, Π°Π»Π΅ ΠΏΡΠΈ ΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΡΡΡ Π²Π΅Π»ΠΈΡΠ΅Π·Π½ΠΈΡ Π΄ΠΎΠ΄Π°ΡΠΊΡΠ² Ρ ΡΡΠΎΡ ΠΈ Π²ΠΈΡΠΎΡ.
Π―ΠΊΡΠΎ ΡΠ½ΡΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²Π°Ρ Π½Π΅ Π·Π°Π½Π°Π΄ΡΠΎ ΠΏΡΠΈΠ²Π°Π±Π»ΠΈΠ²ΠΈΠΉ, Π²ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΡΠΌΠΊΠ½ΡΡΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Ρ ΠΏΡΠΎΠΏΠΎΠ·ΠΈΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ Class Properties Π· Babel:
class SayHello extends React.Component {
constructor(props) {
super(props);
this.state = {message: 'ΠΡΠΈΠ²ΡΡ!'};
}
// Π’ΡΡ ΡΡΡΡΠ»ΠΊΠΎΠ²Π° ΡΡΠ½ΠΊΡΡΡ Π²ΠΈΠΊΠΎΠ½ΡΡ ΠΏΡΠΈΠ²'ΡΠ·ΠΊΡ:
handleClick = () => {
alert(this.state.message);
};
render() {
return (
<button onClick={this.handleClick}>
Π‘ΠΊΠ°ΠΆΠΈ "ΠΏΡΠΈΠ²ΡΡ"
</button>
);
}
}
ΠΠ²Π΅ΡΠ½ΡΡΡ ΡΠ²Π°Π³Ρ, ΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ Π²ΠΈΡΠ΅, Ρ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΈΠΌ Ρ Π²ΡΠ½ ΠΌΠΎΠΆΠ΅ Π·ΠΌΡΠ½ΠΈΡΠΈΡΡ, Π°Π±ΠΎ ΠΏΡΠΎΠΏΠΎΠ·ΠΈΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅ Π²Π½Π΅ΡΠ΅Π½Π° Π² ΡΡΠ°Π½Π΄Π°ΡΡ ΠΌΠΎΠ²ΠΈ.
Π―ΠΊΡΠΎ Π²ΠΈ Π·Π° Π±Π΅Π·ΠΏΠ΅ΡΠ½ΠΈΠΉ Π²Π°ΡΡΠ°Π½Ρ, ΡΠΎ ΠΎΡΡ ΡΠ΅ Π²Π°ΡΡΠ°Π½ΡΠΈ:
- ΠΡΠΈΠ²βΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ.
- ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ ΡΡΡΡΠ»ΠΊΠΎΠ²Ρ ΡΡΠ½ΠΊΡΡΡ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄,
onClick={(e) => this.handleClick(e)}
. - ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅
createReactClass
Ρ Π΄Π°Π»Ρ.
ΠΡΠΊΡΠΈΠ½ΠΈ
ΠΡΠΈΠΌΡΡΠΊΠ°:
ES6 Π±ΡΠ² Π²ΠΈΠΏΡΡΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΠΏΡΠ΄ΡΡΠΈΠΌΠΊΠΈ ΠΌΡΠΊΡΠΈΠ½ΡΠ². Π’ΠΎΠΌΡ Π½Π΅ΠΌΠ°Ρ Π½ΡΡΠΊΠΎΡ ΠΏΡΠ΄ΡΡΠΈΠΌΠΊΠΈ ΠΌΡΠΊΡΠΈΠ½ΡΠ², ΠΊΠΎΠ»ΠΈ Π²ΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠ΅ React Π· ES6-ΠΊΠ»Π°ΡΠ°ΠΌΠΈ.
ΠΠΈ ΡΠ°ΠΊΠΎΠΆ Π·Π½Π°ΠΉΡΠ»ΠΈ Π±Π΅Π·Π»ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠΎΠ΄ΠΎΠ²ΠΈΡ Π±Π°Π·Π°Ρ , ΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡ ΠΌΡΠΊΡΠΈΠ½ΠΈ, Ρ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΡ Ρ ΡΠΎΠ·ΡΠΎΠ±ΡΡ.
Π¦Π΅ΠΉ ΡΠΎΠ·Π΄ΡΠ» ΡΡΠ½ΡΡ ΡΡΠ»ΡΠΊΠΈ Π΄Π»Ρ Π΄ΠΎΠ²ΡΠ΄ΠΊΠΈ.
ΠΠ½ΠΊΠΎΠ»ΠΈ Π΄ΡΠΆΠ΅ ΡΡΠ·Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΌΠΎΠΆΡΡΡ ΠΌΠ°ΡΠΈ ΡΠΏΡΠ»ΡΠ½Ρ ΡΡΠ½ΠΊΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡΡΡ. ΠΠΎΠ½ΠΈ ΡΠ½ΠΊΠΎΠ»ΠΈ Π½Π°Π·ΠΈΠ²Π°ΡΡΡΡΡ Π½Π°ΡΠΊΡΡΠ·Π½Π° Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°Π»ΡΠ½ΡΡΡΡ. createReactClass
Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π·Π°ΡΡΠ°ΡΡΠ»Ρ ΡΠΈΡΡΠ΅ΠΌΡ mixins
.
ΠΠ΄Π½ΠΈΠΌ ΡΠ· ΠΏΠΎΡΠΈΡΠ΅Π½ΠΈΡ
Π²Π°ΡΡΠ°Π½ΡΡΠ² Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΠΊΠΈΠΉ Π±Π°ΠΆΠ°Ρ ΠΎΠ½ΠΎΠ²ΠΈΡΠΈ ΡΠ΅Π±Π΅ ΡΠ΅ΡΠ΅Π· Π΄Π΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΠΌΡΠΆΠΎΠΊ ΡΠ°ΡΡ. ΠΠΎΠΆΠ½Π° ΠΏΡΠΎΡΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ setInterval()
, Π°Π»Π΅ Π²Π°ΠΆΠ»ΠΈΠ²ΠΎ ΡΠΊΠ°ΡΡΠ²Π°ΡΠΈ Π΄Π°Π½ΠΈΠΉ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠ»ΠΈ Π²Π°ΠΌ Π²ΡΠ½ Π½Π΅ ΠΏΠΎΡΡΡΠ±Π΅Π½ ΡΠ° Π΄Π»Ρ Π΅ΠΊΠΎΠ½ΠΎΠΌΡΡ ΠΏΠ°ΠΌβΡΡΡ. React Π½Π°Π΄Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΆΠΈΡΡΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Ρ, ΡΠΊΡ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡΡΡ Π΄ΡΠ·Π½Π°ΡΠΈΡΡ, ΠΊΠΎΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅ ΡΡΠ²ΠΎΡΠ΅Π½ΠΈΠΉ Π°Π±ΠΎ Π·Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠ²ΠΎΡΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΈΠΉ ΠΌΡΠΊΡΠΈΠ½, ΡΠΊΠΈΠΉ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡ Π΄Π°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡ ΡΡΠ½ΠΊΡΡΡ setInterval()
, ΡΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ βΠΏΡΠΈΠ±Π΅ΡΠ΅ Π·Π° ΡΠΎΠ±ΠΎΡβ, ΠΊΠΎΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅ Π·Π½ΠΈΡΠ΅Π½ΠΈΠΉ.
var SetIntervalMixin = {
componentWillMount: function() {
this.intervals = [];
},
setInterval: function() {
this.intervals.push(setInterval.apply(null, arguments));
},
componentWillUnmount: function() {
this.intervals.forEach(clearInterval);
}
};
var createReactClass = require('create-react-class');
var TickTock = createReactClass({
mixins: [SetIntervalMixin], // ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΠΌΠΎ ΠΌΡΠΊΡΠΈΠ½
getInitialState: function() {
return {seconds: 0};
},
componentDidMount: function() {
this.setInterval(this.tick, 1000); // ΠΠΈΠΊΠ»ΠΈΠΊΠ°ΡΠΌΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΠΌΡΠΊΡΠΈΠ½Ρ
},
tick: function() {
this.setState({seconds: this.state.seconds + 1});
},
render: function() {
return (
<p>
React ΠΏΡΠ°ΡΡΠ²Π°Π² {this.state.seconds} ΡΠ΅ΠΊΡΠ½Π΄.
</p>
);
}
});
const root = ReactDOM.createRoot(document.getElementById('example'));
root.render(<TickTock />);
Π―ΠΊΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡ Π΄Π΅ΠΊΡΠ»ΡΠΊΠ° ΠΌΡΠΊΡΠΈΠ½ΡΠ² Ρ Π²ΠΎΠ½ΠΈ Π²ΠΈΠ·Π½Π°ΡΠ°ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΆΠΈΡΡΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Ρ (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π΄Π΅ΠΊΡΠ»ΡΠΊΠ° ΠΌΡΠΊΡΠΈΠ½ΡΠ² Ρ ΠΎΡΡΡΡ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΎΡΠΈΡΡΠΊΡ ΠΊΠΎΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅ Π·Π½ΠΈΡΠ΅Π½ΠΈΠΌ), Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΆΠΈΡΡΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Ρ Π±ΡΠ΄ΡΡΡ Π³Π°ΡΠ°Π½ΡΠΎΠ²Π°Π½ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½Ρ. ΠΠ΅ΡΠΎΠ΄ΠΈ, Π²ΠΈΠ·Π½Π°ΡΠ΅Π½Ρ Π½Π° ΠΌΡΠΊΡΠΈΠ½Π°Ρ , Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΏΠ΅ΡΠ΅ΡΠ°Ρ ΡΠ²Π°Π½Π½Ρ ΠΌΡΠΊΡΠΈΠ½ΡΠ² ΠΏΡΡΠ»Ρ Π²ΠΈΠΊΠ»ΠΈΠΊΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.