рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16.4.0 рдирд┐рдХрд▓реА рд╣реИ! (рдиреЛрдЯ рдЕрдиреБрд╡рд╛рджрдХ - рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ 16.4.0 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ рдереА, рддрдм рдпрд╣ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА)ред рдФрд░ рдРрд╕реЗ рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ - рдПрдХ рдЧреАрдХ рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдврд╛рдВрдЪреЗ рдХреЗ рдорд╛рдореВрд▓реА рдЕрдкрдбреЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрд╕реНрдХрд░рдг 16.4 рдХреЗ
рд▓рд┐рдП рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдиреЛрдЯреНрд╕ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЕрдкрдбреЗрдЯ рдХреЛ рдЙрдмрд╛рдК рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреЙрдЗрдВрдЯрд░ рдЗрд╡реЗрдВрдЯ рдЖрдХрд░реНрд╖рдХ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕реБрдирд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рддрд░рд╣ рдХрд╛ рдирдпрд╛
getDerivedStateFromProps
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП
getDerivedStateFromProps
рд╣реИ (рдЕрдм рдЗрд╕реЗ рд╣рд░ рд░реЗрдВрдбрд░ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрдкрдбреЗрдЯ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдерд╛ред
рддрдм рдореИрдВрдиреЗ рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦрд╛, рд╢реАрд░реНрд╖рдХреЛрдВ рдХреЗ рдиреАрдЪреЗ рджрдлрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдирдпрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдШрдЯрдХ,
unstable_Profiler
рдЬреЛрдбрд╝рд╛ рдерд╛ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореЗрд░рд╛ рдЬреАрд╡рди рдЕрдм рдХрд╛рдлреА рдЕрд╕реНрдерд┐рд░ рд╣реИ (
unstable_
), рдореИрдВрдиреЗ
рдЖрд░рдПрдлрд╕реА рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
TLDR;
рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреЗ рд▓реЛрдЧ
рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред рдмрдврд╝рддреЗ / рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╕рдордп рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдХрдм рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗ рдЗрд╕ рдЪрдордХрджрд╛рд░ рдирдП
Profiler
рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рддреЛ рдЖрдЬ рдЖрдк рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд░реНрдердХ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЕрдм рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдВрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
<Profiler /> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЪреЗрддрд╛рд╡рдиреА : рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ unstable_
)ред рдмрд╛рдж рдореЗрдВ рд╡реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдФрд░ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдХреА рдХреНрд╖рдорддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗредрдЕрд╕рд▓ рдореЗрдВ,
Profiler
рдПрдХ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд┐рдПрдХреНрдЯ рдкреИрдХреЗрдЬ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рд╕рддрд░реНрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╛рдо рд╣реИ, рдЬреЛ рдХрдИ рд▓рд┐рдВрдЯрд░ рдкрд░ рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import React, { unstable_Profiler as Profiler } from 'react'; ... const Profiler = React.unstable_Profiler;
рдЕрдм рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕
Profiler
, рддреЛ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░реЗрдВ! рдЖрдк рдЕрдкрдиреЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдкреЗрдбрд╝ рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░реЛрдЗрд▓рд░ рдореЗрдВ рд▓рдкреЗрдЯ рдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
Profiler
onRender
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рдХрд╛рдЙрдВрдЯрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ :
import React, { unstable_Profiler as Profiler } from 'react'; class ComponentWithProfiling extends React.Component { state = { count: 0 }; logProfile = (id, phase, actualTime, baseTime, startTime, commitTime) => { console.log(`${id}'s ${phase} phase:`); console.log(`Actual time: ${actualTime}`); console.log(`Base time: ${baseTime}`); console.log(`Start time: ${startTime}`); console.log(`Commit time: ${commitTime}`); }; go = direction => () => this.setState(({ count }) => ({ count: direction === "up" ? count + 1 : count - 1 })); render() { return ( <Profiler id="app" onRender={this.logProfile}> <button onClick={this.go("up")}>я╕П</button> <div>The count is {this.state.count}</div> <button onClick={this.go("down")}></button> </Profiler> ); } }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ
id
рдПрдХ
id
рджреЗрдиреА рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
onRender
рджрд┐рд▓рдЪрд╕реНрдк рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
7jroojkv30.codesandbox.ioрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЪрд░рдг рдХреНрдпрд╛ рдерд╛ (рдпрд╛ рддреЛ
mount
рдпрд╛
update
), рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЗ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдЙрддреНрдХреГрд╖реНрдЯ
рдХреНрдпреЛрдВ рдХрд┐рдпрд╛-рдЖрдк-рдЕрдкрдбреЗрдЯ рдкреИрдХреЗрдЬ рдЬреЛ рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛)ред
рдЕрдЧрд▓рд╛, рд╣рдо
actualTime
рдФрд░
baseTime
рдкреНрд░рд╛рдкреНрдд
baseTime
ред рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдЧрдгрдирд╛ рдЧрдгрдирд╛ рдкрд░ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ; рдпрд╛рдиреА рдкрддрд╛ рд▓рдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди (рдЖрд░рдУ) рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдордп) рдЕрдкрдбреЗрдЯ рд╕рдордп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ "рдирдпрд╛" рд╣реИред рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдЧрдгрдирд╛ рд╕рд░рд▓
рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдкреЗрдбрд╝ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрд▓ рдЧрдП рд╣реЛрдВ (рдЕрд░реНрдерд╛рдд, рдЬрдм рдкреНрд░реЛрдк / рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдп рдмрджрд▓ рдЧрдП рд╣реЛрдВ)ред
рдмрдбрд╝реЗ / рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдпрд╣ рдбреЗрдЯрд╛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдХрд╣рд╛рдВ рдкрд░
shouldComponentUpdate
рдЧрд▓рдд рддрд░реАрдХреЗ
shouldComponentUpdate
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЙрдкреНрд╕ рдЕрдХреНрд╕рд░ рдмрджрд▓рддреЗ рд╣реИрдВ рдпрд╛ рдирдП рдкреНрд░реЙрдкреНрд╕ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд┐рд░реНрдл рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред
рдЖрдЦрд┐рд░реА рдорд╛рди рдЬреЛ рд╣рдореЗрдВ
onRender
рдореЗрдВ
onRender
рд╣реИрдВ,
onRender
рд╣реИрдВ
commitTime
рдФрд░
commitTime
ред рдпреЗ рд╢реБрд░реБрдЖрддреА рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реИрдВред
startTime
рд╡рд╣ рд╕рдордп рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЪрдпрдирд┐рдд рдШрдЯрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐
рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдордп рд╡рд╣ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ рдЬрдм React рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ
рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк (рдЬреИрд╕реЗ рдХреНрд▓рд┐рдХ рдпрд╛ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕) рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╣реЛрдиреЗ рдкрд░ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдмреАрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд▓реНрдЯрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЕрдВрддрд░ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдпрд╣ рджреЗрд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрдкрдХрд░рдг рдЕрднреА рддрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдореИрдВ рдХрднреА рднреА рдЗрди рдкреНрд░рджрд░реНрд╢рдиреЛрдВ рдореЗрдВ рдЕрдбрд╝рдЪрди рдЖрддреА рд╣реВрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдорд╛рдкрдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓реЗ рдЕрдкрдиреА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдорд╛рдкрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк "рд╕реБрдзрд╛рд░" рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдпрд╣ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ рдмрд┐рдЧрдбрд╝рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рди рдкрд░ рдЖрдк рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХреБрдЫ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдореИрдВ рдЖрдЧреЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рдПрдХреНрдЯрд░ рдЯреАрдо рдкреНрд░реЛрдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдЧреАред рдЗрд╕
рдирд┐рдлреНрдЯреА рдлреАрдЪрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП
@bvaughn рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ:рдлрд┐рд▓рд╣рд╛рд▓ (рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 16.6.0) рдкреНрд░реЛрд╡рд╛рдЗрд▓рд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдлрд╝реАрдЪрд░ рдЕрдиреБрд░реЛрдз рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред