рдпрд╣ рдПрдХ рдорд╣рд╛рди рдпреЛрдЧрджрд╛рди рдЕрд╡рд╕рд░ рд╣реИред
рд╣рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ react
, react-dom
, react-dom/test-utils
, react-test-renderer
, рдЖрджрд┐ рдЬреИрд╕реЗ npm рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдЬреИрд╕реЗ SyntheticEvent
рдирд╣реАрдВ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ReactDOMComponentTree
ред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ "рдЦрд░рд╛рдм" рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА TODO рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рди рдХрд░реЗрдВред
рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
// TODO: can we express this test with only public API?
рдЦреЛрдЬреЗрдВредрдЪрд░рдг 3 рдХреБрдЫ рд╕реЛрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдЖрдо рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдРрдк рдореЗрдВ рдХреИрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ! рдпрджрд┐ рдЖрдк рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рд╣рдо рд╡рд┐рдЪрд╛рд░-рдордВрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рд░рд▓ рдПрдХ-рд▓рд╛рдЗрдирд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреБрдЫ рддреЛ рдЕрд╕рдВрднрд╡ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рддрдХ рдкрд╣реБрдБрдЪрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╢реЛрдз рдЕрднреА рднреА рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред
рдЗрдиреНрд╣реЗрдВ рдЖрдЬрдорд╛рдПрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ:
рдЕрджреНрдпрддрди: рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЕрднреА рд▓рд┐рдП рдЧрдП рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рддреЛ рд╡реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
ReactBrowserEventEmitter-test.js
( @madeinfree рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рджреЗрдЦреЗрдВ https://github.com/facebook/react/issues/11299#issuecomment-355188567)getNodeForCharacterOffset-test.js
(@accordeiro рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactErrorUtils-test.js
(@reznord рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)BeforeInputEventPlugin-test.js
+ FallbackCompositionState-test.js
(@GordyD рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)validateDOMNesting-test.js
(@anushreesubramani рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11742ReactIncrementalPerf-test.js
(@dphurley рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)SelectEventPlugin-test.js
(@skiritsis рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactTreeTraversal-test.js
(@timjacobi рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)SyntheticKeyboardEvent-test.js
+ getEventCharCode-test.js
(@aarboleda1 рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)escapeTextContentForBrowser-test.js
(@jeremenichelli рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)inputValueTracking-test.js
quoteAttributeValueForBrowser-test.js
(@jeremenichelli рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactDOMComponent-test.js
(@AudiOdi рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactDOMComponentTree-test.js
(@GordyD рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactDOMEventListener-test.js
(@enapupe рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactDOMInput-test.js
(@SadPandaBear рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactDOMServerIntegration-test.js
(@minerado рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)setInnerHTML-test.js
(@silvetrijonathan рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)getEventKey-test.js
(@mjw56 рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)SyntheticClipboardEvent-test.js
(@smaniotto рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)SyntheticEvent-test.js
(@timjacobi рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)SyntheticWheelEvent-test.js
(@douglasgimli рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ChangeEventPlugin-test.js
(@ рдПрдерди-рдЕрд░реЛрд╡реБрдб рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)EnterLeaveEventPlugin-test.js
(@accordeiro рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactCoroutine-test.js
(@jstejada рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ReactFiberHostContext-test.js
(@adsonpleal рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)рдкрд╣рд▓реА рдмрд╛рд░ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛?
рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдо рддрдп рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ рдирд┐рдкрдЯ рд╕рдХрддрд╛ рд╣реВрдВред
рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛! рдпрджрд┐ рдЖрдк рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдереНрд░реЗрдб рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдЙрд╕реА рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рди рдХрд░реЗред
рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рджреЗрдЦреВрдВрдЧрд╛ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдвреВрдВрдвреВрдВрдЧрд╛!
рдореБрдЭреЗ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ
рдореИрдВрдиреЗ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреАред рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реЗ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╕реМрдВрдк рджреВрдВрдЧрд╛ред
ReactDOMInput-test
рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рд╣реИ :)
@SadPandaBear рд╕рдордЭ рдЧрдпрд╛!
рдореИрдВ ReactErrorUtils-test
рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ
рдореИрдВ setInnerHTML-test.js
. рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реВрдВрдЧрд╛
рдореИрдВ getEventCharCode-test.js
рдХрд░реВрдБрдЧрд╛ред рдореИрдВ
рдореИрдВ getEventKey-test.js
рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВ escapeTextContentForBrowser-test.js
рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВ ChangeEventPlugin-test.js
рдПрдХ рд╢реЙрдЯ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ :)
рдореИрдВ SyntheticEvent-test.js
. рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдБ
рдореИрдВ EnterLeaveEventPlugin-test.js
. рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдореИрдВ ReactDOMEventListener-test.js
. рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдореИрдВ BeforeInputEventPlugin-test.js
. рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛/рдЪрд╛рд╣рддреА рд╣реВрдВ
рдореИрдВ SyntheticKeyboardEvent-test.js рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рдж
рдореБрдЭреЗ inputValueTracking-test.js
. рд▓реЗрдиреЗ рджреЛ
рдореИрдВ SyntheticWheelEvent-test.js
. рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдХреНрдпрд╛ рдореИрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдБ: ReactBrowserEventEmitter-test.js
?
рдореИрдВ рд▓реЗ рд░рд╣рд╛ рд╣реВрдБ SelectEventPlugin-test.js
рдореИрдВ ReactDOMComponentTree-test.js
. рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдореИрдВ ReactTreeTraversal-test.js . рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдирдорд╕реНрддреЗ! ЁЯСЛ рдореИрдВ ReactCoroutine-test.js
. рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдореИрдВ SyntheticClipboardEvent-test.js
. рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдБ
рдореИрдВ validateDOMNesting-test.js
. рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдореИрдВ EventPluginRegistry-test.js
. рд▓реЗ рд╕рдХрддрд╛ рдерд╛
рдореИрдВ ReactDOMComponent-test.js
. рдкрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рдирдорд╕реНрдХрд╛рд░! рдореИрдВ quoteAttributeValueForBrowser-test.js
рдкрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ! :рдорд╛рдВрд╕рдкреЗрд╢реА:
рдирдорд╕реНрдХрд╛рд░! рдореИрдВ ReactDOMServerIntegration-test.js
рдкрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ!
рдореИрдВ рд▓реВрдВрдЧрд╛ ReactIncrementalPerf-test.js
рдореИрдВ getNodeForCharacterOffset-test.js рдХрд░реВрдБрдЧрд╛
@burnsbeaver рдХреМрди рд╕рд╛ рд╣реИ, FallbackCompisitionState-test
рдпрд╛ getNodeForCharacterOffset-test
? рд╣рдо рдкреНрд░рддрд┐ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
getNodeForCharacter рдХреГрдкрдпрд╛ред рдореИрдВрдиреЗ рджреВрд╕рд░реА рдЯрд┐рдкреНрдкрдгреА рд╣рдЯрд╛ рджреА, рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ!
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА FallbackCompositionState-test.js
рдФрд░ReactFiberHostContext-test.js
рдореБрдлрд╝реНрдд рд╣реИ!
рдореИрдВ FallbackCompisitionState рд▓реВрдВрдЧрд╛!
рдореИрдВ ReactFiberHostContext-test.js рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддрд╛ рд╣реВрдВ
рдЕрджреНрдпрддрди: рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЕрднреА рд▓рд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ! рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рддреЛ рд╡реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВрдЧреЗред
рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ-рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдорд╛рдзрд╛рди рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рд╕реНрд░реЛрдд рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдпрдереЛрдЪрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрднреА рднреА рдЕрдЯрдХрд╛ рд╣реБрдЖ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ, рдФрд░ рд╣рдо рдПрдХ рдпреЛрдЬрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
@adsonpleal рдЖрдкрдХреЛ рдирд┐рд░рд╛рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВтАФрдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ, рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдордиреЗ рдЧрд▓рддреА рд╕реЗ рдкрд╣рд▓реЗ рд╣реА ReactFiberHostContext-test
рддрдп рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рд╡рд╣ TODO рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рддрдп рд╣реИред
@gaearon рд╡рд╛рд╣, ReactDOMInput-test
рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рдЦрддреНрдо рдХрд░ рджреВрдВрдЧрд╛ред
рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рдВрджреЗрд╣ рд╣реИ:
рдХреНрдпрд╛ рдЙрд╕ рд╕рднреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ setUntrackedValue
рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрджрд▓рдирд╛ рдареАрдХ рд╣реИ рдЬреЛ inputValueTracking рдХрд╛ рдЙрдкрдпреЛрдЧ inputValueTracking
ReactTestUtils.Simulate.?
рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдХрд░рддрд╛ рд╣реИ?
рд╡реИрд╕реЗ рдЖрдк рдореЗрд░реЗ рдкреАрдЖрд░ рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ inputValueTracking
рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг inputValueTracking
рд╕реЗ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдордЧреНрд░реА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ReactTestUtils
рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
inputValueTracking
рдХреЗ рд▓рд┐рдП @jquense рдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рд╕рд┐рд░, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╛рд░реНрди рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдерд╛ (0.22) рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рд░рд╣рд╛ рдерд╛ред рдпрд╛рд░реНрди рдХреЛ рдирд╡реАрдирддрдо (1.2.1) рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЕрдм рдареАрдХ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
@sadpandabear рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╣реА рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ
@gaearon setInnerHTML
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рд▓рд┐рдП setInnerHTML
рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
рдореИрдВ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЖрдВрддрд░рд┐рдХ рдПрдЪрдЯреАрдПрдордПрд▓, рдмрдирд╛рдо setInnerHTML
рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдЫ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рддрд░реНрдЬ рдкрд░ рдЕрдзрд┐рдХ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЗ рдирд╛рдордХрд░рдг рдкрд░ рдереЛрдбрд╝рд╛ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЬрдм рддрдХ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ ... рдПрд╕рд╡реАрдЬреА рдХреЗ рдкрд╛рд╕ innerHTML
рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рджреВрд╕рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
@silvetrijonathan рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ dangerouslySetInnerHTML
рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк ReactDOM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╕рд╛рдордЧреНрд░реА рдХреЛ dangerouslySetInnerHTML
рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ рддреЛ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ dangerouslySetInnerHTML-test
рдХрд░рдирд╛ рдареАрдХ рд╣реИред
рдореЗрд░реА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ (рдореЗрд░реЗ рдЬреИрд╕реЗ) рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рд╕реБрдЭрд╛рд╡ рд╣реИ: рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдПрдирд╡реА (рдлрд╝рд╛рдЗрд▓) рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░реЗрдВред
рдореИрдВ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕рдиреЗ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдпрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ ReactTestUtils
рдлрд╝рдВрдХреНрд╢рди рдЯреВрдЯ рдЧрдП рдереЗ !! рдореБрдЭреЗ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдЪреАрдЬреЗрдВ рдЗрд░рд╛рджреЗ рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИрдВ..
@gaearon рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ ReactTestUtils
, рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХреЛ рдПрдХ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣рдореЗрдВ рдареАрдХ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддрд╛ рдХрд┐ рдпрд╣ рдЕрдиреНрдпрдерд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрди рд╣реБрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрдХрд▓рд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рд╣рдорд╛рд░реА рдХреНрд╖рдорддрд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдирдИ рдЧреИрд░-рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдШрдЯрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрдЧрд╛ред
@dphurley , рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЖрдк ReactIncrementalPerf-test
рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдкрд░ рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ ReactCoroutine
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдкреАрдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: #11338ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ #11338 (рдпрджрд┐ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@gaearon рдЖрдкрдХреА рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП React-DOM
рдХреЗ рд╕рд╛рде dangerouslySetInnerHTML
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛рдКрдВрдЧрд╛!
рдФрд░ рд╣рд╛рдБ, рдореИрдВ рд╢рд╛рдпрдж рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреВрдВрдЧрд╛ред рдЕрдЧрд▓реЗ рджрд┐рди рдпрд╛ рддреЛ рдореЗрд░реЗ рдкреАрдЖрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред
рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреАрдЖрд░ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ!
рдЗрд╕реЗ рджреЗрдЦреЗрдВ: https://github.com/facebook/react/pull/11309
рдпрджрд┐ рдЖрдк рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк https://github.com/facebook/react/pull/11309 рдореЗрдВ рджреЛрдиреЛрдВ рдЪрд░реНрдЪрд╛рдПрдБ рдФрд░ рд╕рдореАрдХреНрд╖рд╛рдПрдБ рдкрдврд╝реЗрдВ:
https://github.com/facebook/react/pull/11316
https://github.com/facebook/react/pull/11317
https://github.com/facebook/react/pull/11327
https://github.com/facebook/react/pull/11332
рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╖рдп рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдкреАрдЖрд░ рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рдХрд╛рдлрд┐рд▓рд╛-рдзрдиреНрдпрд╡рд╛рдж!
рдХрд╛рдо рдереЛрдбрд╝рд╛ рд╡реНрдпрд╕реНрдд рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдЦреЛрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ред
рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЬреЛ рдкрд░реАрдХреНрд╖рд╛ рд▓реА рд╣реИ рдЙрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред рджреВрд╕рд░реЗ рдХрд╛рдореЛрдВ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реЛ рдЧрдПред рдореИрдВ рдХреБрдЫ рдФрд░ рджрд┐рдиреЛрдВ рдореЗрдВ рдкреАрдЖрд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рд╕рдордп рдЦрд░реАрдж рд╕рдХрддрд╛ рд╣реВрдВ?
рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдЬрд╝рд░реВрд░!
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА
рдПрдХ рдФрд░ рдкреАрдЖрд░ рд╡рд┐рд▓рдп! https://github.com/facebook/react/pull/11316
рджреЛ рдФрд░ рдиреАрдЪреЗред https://github.com/facebook/react/pull/11317 https://github.com/facebook/react/pull/11385
рдореИрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд┐рдЦрд╛ред https://github.com/facebook/react/pull/11385#issuecomment -341934588
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рд╕рднреА рд▓реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ, рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдпрджрд┐ рдХреЛрдИ рдореБрдлреНрдд рд╣реИ рдФрд░ рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛
рдореИрдВрдиреЗ рджреЛ рдФрд░ рдкреАрдЖрд░ рдХрд╛ рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ SyntheticEvent
s рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдХреЛрдИ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВ рдФрд░ рд╢реИрд▓реА рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: https://github.com/facebook/react/pull/11365 рдФрд░ https://github.com/facebook/react/issues/ 11299
@gaearon EventPluginRegistry-test.js
рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо ReactDom.js -> ReactDOMClientInjection.js рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
{
рд╕рд┐рдВрдкрд▓рдЗрд╡реЗрдВрдЯрдкреНрд▓рдЧрд┐рди,
EnterLeaveEventPlugin,
рдЪреЗрдВрдЬрдЗрд╡реЗрдВрдЯ рдкреНрд▓рдЧрдЗрди,
рдЗрд╡реЗрдВрдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ,
рдкрд╣рд▓реЗ рдЗрдирдкреБрдЯрдЗрд╡реЗрдВрдЯ рдкреНрд▓рдЧрдЗрди,
}
рддреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг-рдордЬрд╛рдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХреИрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ EventPluginRegistry
рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореИрдВрдиреЗ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрди рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЯреИрдк-рдЗрд╡реЗрдВрдЯ-рдкреНрд▓рдЧрдЗрди рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреИрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ
require('react-dom').__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.EventPluginHub.injection.injectEventPluginsByName({
'TapEventPlugin': require('./TapEventPlugin.js')(shouldRejectClick)
});
рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореИрдВ ReactTreeTraversal-test.js
. рдкрд░ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рд╣реВрдБ
рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдРрд╕рд╛ рдХрд░реЗрдВред
@aqumus
EventPluginRegistry
рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЯреИрдк рдЗрд╡реЗрдВрдЯ рдкреНрд▓рдЧ-рдЗрди рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рдкреНрд▓рдЧ-рдЗрди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрднреА рднреА рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд░реЗрдкреЛ рдореЗрдВ рд╣реИред рддреЛ рд╢рд╛рдпрдж рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рднреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ RN EventPluginRegistry
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ RN рдИрд╡реЗрдВрдЯ рдХреЗ рдХрд╛рд░реНрдп рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗрдВ рдирд╣реАрдВ рдкрддрд╛ред EventPluginRegistry
рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдФрд░ рдпрд╣ рджреЗрдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╣рдо рдЗрд╕рдХреЗ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╕рдорд╛рди рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЙрди рдХреЛрдб рдкрдереЛрдВ рдкрд░ рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рднреА рд╣реИ рдХреНрдпрд╛?
@gdevincenzi рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣рдЯрд╛ рджреВрдВрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рджреВрд░ рд░рд╣рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рди рд░реЛрдХреЗрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреБрдЫ рдФрд░ рдЬрдорд╛ рдХрд┐рдП рдЧрдП рдкреАрдЖрд░ рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ ReactTreeTraversal-test.js
рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ - рдпрд╣ рдПрдХ рдЕрдкрд░рд┐рдЪрд┐рдд рдПрдкреАрдЖрдИ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ opp рд▓рдЧрддрд╛ рд╣реИред рд╕рд▓рд╛рд╣ рд╕реНрд╡рд╛рдЧрдд рд╣реИ @gdevincenzi
рдПрдХ рдЬрдЯрд┐рд▓ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @gordyd рдХреЛ рдмрдзрд╛рдИ: https://github.com/facebook/react/pull/11383ред
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдХреЛрдб рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрд┐рддрдирд╛ рдЕрд▓рдЧ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрдк рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ, рдЧрд┐рдЯ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЗрдЦрдХрд░, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрднреА рддрдХ рдХреЛрдИ рдкреАрдЖрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ:
@рдИрдореЗрд▓2рд╡рд┐рдорд▓рд░рд╛рдЬ
@andrevargas
@tranotheron
@minerado
@sw-yx
@ рд░рд╛рдЬрд╛0120
@aarboleda1
@danilowoz
@dms1lva
@рдореЛрд░рдЬрд╛рдмреА
@dphurley
@reznord
@aqumus
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдФрд░ рднреА рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рдХрддрд╛рд░ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рддреЛ рджреВрд╕рд░реЛрдВ рдХреЛ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
@andrevargas рдиреЗ рдЖрдкрдХреА рдЪрд░реНрдЪрд╛ рдХреЛ https://github.com/facebook/react/pull/11331 рдореЗрдВ рджреЗрдЦрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╣рд╛рдВ рдПрдХреАрдХреГрдд рд░рдЦрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЙрд╕ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ @gaearon
@gaearon рд╣рд╛рдБ, рддреБрдо рд╕рд╣реА рд╣реЛред рдмрд╕ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, @jeremenichelli #11331 рдореЗрдВ quoteAttributeValueForBrowser-test.js
рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдВрдХ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рднреА рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ @gaearon
@gaearon рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХрд┐рд╕реА рд╕рдордп рдпрд╛ рддреЛ рдореЗрд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╛ рдкреАрдЖрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред
@gaearon рдореИрдВрдиреЗ SyntheticKeyboardEvent.js рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреАрдЖрд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред
@gaearon рдореИрдВ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рднреА рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдирд╣реАрдВ рд╣реИред
@gaearon рд▓рдВрдмреЗ рд╡рд┐рд▓рдВрдм рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЕрднреА WIP PR рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдкрдбреЗрдЯ: рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╕рд╛рде рд╣реА, рдореБрдЭреЗ top<EventName>
s рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред
https://github.com/facebook/react/blob/92b7b172cce9958b846844f0b46fd7bbd8c5140d/packages/react-dom/src/events/__tests__/SelectEventPlugin-test.js > extract
рд╕рдорд╛рд░реЛрд╣
@gaearon рд▓рдВрдмреА рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ ред рдореИрдВ рдЖрдЬ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕рдВрджреЗрд╣ рд╣реИ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдкрд┐рдВрдЧ рдХрд░реВрдВрдЧрд╛ред
@morajab рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХрд╛ рд╣реИ
SelectEventPlugin
рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рд╕рдордЭреЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреМрди рд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИSelectEventPlugin
рд▓реЛрдб рдХрд░рдирд╛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЯреВрдЯрддрд╛ рд╣реИ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ)SelectEventPlugin
рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рд╣реИ@gaearon рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝реА
рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ EventPluginRegistry.js
рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ ( SyntheticWheelEvent
, ReactDOMComponentTree
, SyntheticClipboardEvent
, SyntheticWheelEvent
, inputValueTracking
, SimpleEventPlugin
, ChangeEventPlugin
, ReactDOMComponentTree
рдЖрджрд┐),
рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ ReactBrowserEventEmitter.js
registrationNameDependencies
$ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ EventPluginRegistry.js
рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╕рдордп
рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ (рдХреЗрд╡рд▓ EventPluginRegistry
рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд░рд╣рд╛)
рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ EventPluginRegistry
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ
рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ EventPluginRegistry
рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдореБрдЭреЗ @kentcdodds рд╡реАрдбрд┐рдпреЛ рдкреЙрдбрдХрд╛рд╕реНрдЯ рдорд┐рд▓рд╛ - рдмреЗрди рдЕрд▓реНрдкрд░рдЯ рджреНрд╡рд╛рд░рд╛ рдИрд╡реЗрдВрдЯ рдХреЛрдб рд╡реЙрдХрдереНрд░реВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @gaearon рдореИрдВрдиреЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ
рддреЛ рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдореЗрд░реЗ рдореБрджреНрджреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ :)
@danilowoz @gaearon рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рддреЛ рдореИрдВ рдкрд╣рд▓реЗ рдЗрдирдкреБрдЯрдЗрд╡реЗрдВрдЯрдкреНрд▓рдЧрд┐рди-рдЯреЗрд╕реНрдЯ.рдЬреЗрдПрд╕ рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВред
@timjacobi ReactDOMComponentTree.getInstanceFromNode
рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреНрдпрд╛ рд╣реИ?
рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╣рд╛рдВ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
SelectEventPlugin рд▓реЛрдб рдХрд░рдирд╛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЯреВрдЯрддрд╛ рд╣реИ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ)
@ рдореЛрд░рд╛рдЬрд╛рдмреА рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕рд╣реА рд╕реНрддрд░ рдкрд░ рдирд┐рдкрдЯрд╛ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдм рддрдХ рдЬреЛ рдХреБрдЫ рд╣реИ, рдЙрд╕рд╕реЗ рдЖрдк WIP PR рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЬреНрдпрд╛рджрд╛ рдкреНрд░рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред
@timjacobi рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдирдпрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рдЗрди рджрд┐рдиреЛрдВ рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╣реВрдБ рдЕрдЧрд░ рдХреЛрдИ SelectEventPlugin-test
рд▓реЗ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рд╣рдореЗрдВ ReactDOMServerIntegration-test
(cc @minerado) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИред
@aqumus рдЖрдкрдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рдЗрд╕ рд╕реВрдЪреА рд╕реЗ EventPluginRegistry-test.js
рд╣рдЯрд╛ рджреВрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЙрди рд╡рд┐рд╢реЗрд╖ рдЖрдВрддрд░рд┐рдХреЛрдВ рдХреЗ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
@ King0120 рдореИрдВ getEventCharCode-test
рдХреЛ @ aarboleda1 рдкрд░ рдлрд┐рд░ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ https://github.com/facebook/react/pull/11631 рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@morajabi @gaearon рдореИрдВ SelectEventPlugin-test.js рдкрд░ рднреА рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВред
@ email2vimalraj FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ inputValueTracking-test
рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред
рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рд╕реНрд╡рд╛рдореА рдирд╣реАрдВ рд╣реИ:
getNodeForCharacterOffset-test.js
(3/5)ReactBrowserEventEmitter-test.js
(5/5)BeforeInputEventPlugin-test.js
+ FallbackCompositionState-test.js
(5/5, рд╕рдВрдпреБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) @GordyD рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛SelectEventPlugin-test
(2/5) @skiritsis . рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ReactTreeTraversal-test.js
(4/5) @timjacobi . рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛рдореИрдВрдиреЗ рдЙрдирдХреА рдХрдард┐рдирд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЫрд╛рдБрдЯрд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ @timjacobi @kwnccc @skiritsis рдХреЗ рд╕рд╛рде рдПрдХ рдХрддрд╛рд░ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рддреАрдиреЛрдВ рд╣рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдХреГрдкрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИ)ред рдЖрдк рднреА рдкрд╛рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдХрд┐рд╕реА рдФрд░ рдХреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рджреЗрдВрдЧреЗред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛрддреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╢реБрд░реБрдЖрддреА рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рдпрд╛рдВрддреНрд░рд┐рдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИрдВ; рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреНрдпрд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдПрдХ рд╕рдорд╛рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг (рдЬреЛ рдмрд╣реБрдд рдЕрд▓рдЧ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реИред
рдЗрдиреНрд╣реЗрдВ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрдк рдЪреАрдЬреЛрдВ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ @GordyD рдиреЗ https://github.com/facebook/react/pull/11383 рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЧрд░ @GordyD рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЙрд╕реЗ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!
@skiritsis рдЪреВрдВрдХрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ SelectEventPlugin-test
рдлрд┐рд░ рд╕реЗ рд╕реМрдВрдк рджреВрдВрдЧрд╛ред
рдореИрдВ ReactBrowerEventEmitter-test.js рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
@gaearon : рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рдордп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рджреВрд╕рд░реЗ рдХрд╛рдо рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реЛ рдЧрдПред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░реА рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ред
рдореИрдВ ReactTreeTraversal-test.internal.js
. рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдБ
@madeinfree рдкрд╣рд▓реЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП @kwnccc рдХреЛ рдХреБрдЫ рджрд┐рди рджреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрддрд╛рд░ рдореЗрдВ рд╣реИред рдЕрдЧрд░ рдЙрд╕реЗ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЖрдкрдХреЛ рд╕реМрдВрдк рджреВрдВрдЧрд╛ред
@gaearon рдареАрдХ рд╣реИ! рд╕рдордЭ рдЧрдпрд╛, рдзрдиреНрдпрд╡рд╛рдж ~
@gaearon рдореИрдВ BeforeInputEventPlugin
+ FallbackCompositionState
рдХреЗ рд╕рдВрдпреЛрдЬрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реВрдВрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж @GordyD!
рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рдИрд╡реЗрдВрдЯ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдпрд╣ рдХреЛрдб рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ: https://github.com/facebook/react/pull/11631 https://github. рдХреЙрдо/рдлреЗрд╕рдмреБрдХ/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛/рдкреБрд▓/11525
@gaearon рдореБрдЭреЗ ReactBrowserEventEmitter-test.js
рд▓реЗрдиреЗ рдореЗрдВ рднреА рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЗрд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред
@madeinfree
рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА ReactBrowerEventEmitter
рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд▓реЗрдВ рдФрд░ рд╣рдореЗрдВ рдЕрдкрдбреЗрдЯ рд░рдЦреЗрдВ!
@gaearon рдареАрдХ рд╣реИ! рдореИрдВ рдЗрд╕реЗ рд▓реЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЖрдкрдХреЛ рдпрд╣ рдорд┐рд▓рд╛ред
рдХреЛрдИ рднреА рд╢реЗрд╖ getNodeForCharacterOffset-test
рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?
рдореИрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ( getNodeForCharacterOffset-test
) :)
@gaearon рдХреЛ ReactIncrementalPerf-test.js
рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдХрд░реВрдБрдЧрд╛ред рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕ рдкрд░ рд▓рдЯрдХреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝реА, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рдЪрд╛рд╣реЗ рддреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ!
@accordeiro рдЖрдкрдХреЛ рдорд┐рд▓ рдЧрдпрд╛!
@gaearon рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЕрдЧрд░ рдЕрднреА рднреА рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╕рд╛рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
@kwnccc ReactIncrementalPerf-test.js
рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдХреНрдпрд╛ рдореИрдВ ReactIncrementalPerf-test.js
рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ? рдпрд╛ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ @kwnccc рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рдореБрдЭреЗ ReactIncrementalPerf.js
рдирд╛рдо рдХреА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдореЗрдВ ReactPortal.js
рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛?
рдЕрдЧрд░ рдореИрдВрдиреЗ ReactIncrementalPerf-test.js
рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдереЛрдбрд╝рд╛ рднреА рд╕рдордЭ рд▓рд┐рдпрд╛ рд╣реИ (рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ), рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ ReactPortal.createPortal (...) рд╕реЗ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдЬреИрд╕реЗ React-dom рдХреЗ рд╕рд╛рде React-dom рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред .рдХреНрд░рд┐рдПрдЯрдкреЛрд░реНрдЯрд▓ (...) ? @gaearon
@gaearon рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ReactIncrementalPerf-test.js
рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЪреВрдБрдХрд┐ @ abiduzz420 рдиреЗ рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рд╢реБрд░реВ рдХрд░ рджреА рд╣реИ, рд╣рдо рдЬрд╝рд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЯреАрдо рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рдБ рдЬрд╝рд░реВрд░ @kwnccc рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдХреЗ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред рддреБрдо рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдХрддрд╛рд░ рдореЗрдВ рдереЗ, рддреЛ рд╕рдм рддреБрдореНрд╣рд╛рд░рд╛!
@kwnccc рдЬрдм рдореИрдВ yarn flow
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ yarn test
рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рддреНрд░реБрдЯрд┐ рдФрд░ рдкреНрд░рд╡рд╛рд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдлреЛрд░реНрдХрдб рд░реЗрдкреЛ рдкрд░ рдХреЛрдб рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдКрдВрдЧрд╛: https://github.com/abiduzz420/react рддрд╛рдХрд┐ рдЖрдк рднреА рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ
FAIL packages\react-reconciler\src\__tests__\ReactIncrementalPerf-test.internal.js (11.191s)
тЧП ReactDebugFiberPerf тА║ supports portals
Invariant Violation: Target container is not a DOM element.
at invariant (node_modules/fbjs/lib/invariant.js:42:15)
at Object.createPortal (packages/react-dom/src/client/ReactDOM.js:1112:70)
at Object.<anonymous> (packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js:510:116)
$ yarn flow
yarn run v1.3.2
$ node ./scripts/tasks/flow.js
Error: packages/react-reconciler/src/ReactFiberHostContext.js:87
87: const nextContext = getChildHostContext(context, fiber.type, rootInstance);
^^^^^^^ NoContextT. This type is incompatible with the expected param type of
v---------------------------------------------
31: export default function<T, P, I, TI, HI, PI, C, CC, CX, PL>(
32: config: HostConfig<T, P, I, TI, HI, PI, C, CC, CX, PL>,
33: ): HostContext<C, CX> {
--------------------^ some incompatible instantiation of `CX`
Error: packages/react-reconciler/src/ReactFiberHostContext.js:87
87: const nextContext = getChildHostContext(context, fiber.type, rootInstance);
^^^^^^^^^^^^ NoContextT. This type is incompatible with the expected param type of
v---------------------------------------------
31: export default function<T, P, I, TI, HI, PI, C, CC, CX, PL>(
32: config: HostConfig<T, P, I, TI, HI, PI, C, CC, CX, PL>,
33: ): HostContext<C, CX> {
--------------------^ some incompatible instantiation of `C`
Found 2 errors
Flow failed
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
@ abiduzz420 рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ)ред https://github.com/facebook/react/issues/11703 рджреЗрдЦреЗрдВред
@kwnccc ReactIncrementalPerf-test
рдХреЗ рд▓рд┐рдП, рд╣рд╛рдБ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЗрд╕ рд╕рдордп рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ ReactPortal
рдХреЛ shared
рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдлрд┐рд░ ReactNoop
рдЕрдкрдиреА createPortal()
рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ (рдЬреИрд╕реЗ ReactDOM
рдХрд░рддрд╛ рд╣реИ)ред
рдПрдХ рдФрд░ рдиреАрдЪреЗ! https://github.com/facebook/react/issues/11299
@gaearon рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯрдкреЛрд░реНрдЯрд▓ рдХреЛ рд╕рд╛рдЭрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЧрдП рд╣реИрдВред $# ReactNoop
$#$ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЕрдкрдиреА рд╡рд┐рдзрд┐ createPortal()
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред createPortal()
рдХреЛ ReactDOM
рдореЗрдВ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рд▓реЗрддреЗ рд╣реБрдП рдореИрдВ ReactPortal.createPortal(children,container,null,key)
рд╡рд╛рдкрд╕ рдХрд░ рджреВрдВрдЧрд╛ред
рдореИрдВ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ:
function createPortal( children: ReactNodeList, container: Container, key: ?string = null) {
invariant(
// TODO: Need to figure out this part of the code
);
return ReactPortal.createPortal(children, container, null, key);
}
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?
@gaearon рдореЗрд░рд╛ рдХреЛрдб рдЕрднреА рднреА рдПрдХ рд╡рд╛рдЗрдк рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реВрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдореЗрд░реЗ рдХреЛрдб рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рдВрджреЗрд╣реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
@abiduzz420 рд╣рд╛рдБ рдпрд╣ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ
@рдЕрдиреБрд╢реНрд░реАрд╕реБрдмреНрд░рдордгрд┐
рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЬреЛ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдпрд╛ рд╣реИ рд╡рд╣ рд╕рд╣реА рд╣реИ?
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╣рд╛рдБ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП
expect(isTagStackValid(['a', 'a'])).toBe(false);
рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП
expectInvalidNestingWarning(true, ['a', 'a']);
рдЬрд╣рд╛рдВ expectInvalidNestingWarning
рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдШрдЯрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рд╡рд┐рд╢реЗрд╖ рдФрд░ рд╕реНрд╡рд░реВрдкрдг рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рд╕реЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рд╛рдБ, рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ:
function expectInvalidNestingWarning(shouldWarn, tags) {
let element = null;
tags = [...tags];
while (tags.length) {
element = React.createElement(tags.pop(), null, element);
}
const container = document.createElement('div');
ReactDOM.render(element, container);
// assert either a warning or lack of one based on shouldWarn
}
рд╣рдо рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдЕрдВрдд рдореЗрдВ рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдХреБрдЫ рдЧрд▓рдд рд▓рд┐рдЦрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдЖрдк рднреА рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд░рдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ
jest.resetModules();
React = require('react');
ReactDOM = require('react-dom');
рдкреНрд░рддрд┐рдкрд╛рджрди рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде 'рдХрд┐рд╕реА рднреА рдЯреИрдЧ рдирд╣реАрдВ рд╕рдВрджрд░реНрдн' рдкрд░реАрдХреНрд╖рдг рдХреЗ 'рдХреЛрдИ рд╕рдВрджрд░реНрдн' рднрд╛рдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ isTagValidInContext() рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╣реАрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рджреЛрд╖ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрд╕реЗ https://github.com/facebook/react/commit/76bb96ef21b7c665e1b51b6bb90e64ec40c0f16a рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕ рд╕рдордп рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рднреА рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЧрдВрднреАрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ:
рд▓реЗрдХрд┐рди рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдм рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХрднреА рдЪреЗрддрд╛рд╡рдиреА рди рджреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдПрдХ рдХреЛрдб рдкрде рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ null
рдХреЛ ancestorInfo
рд╕реЗ validateDOMNesting
рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╢рд╛рдпрдж рд╣рдореЗрд╢рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
@gaearon рдореИрдВрдиреЗ createPortal()
рдХреЗ рд▓рд┐рдП ReactNoop.js
#$ рдореЗрдВ рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ ReactPortal.js
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╛рдЭрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдХреГрдкрдпрд╛ рдореЗрд░реЗ рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдореБрдЭреЗ рдХреЛрдИ рд╕рдВрд╢реЛрдзрди рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрдзрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдХрд░реВрдВрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдПрдХ рдкреАрдЖрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ? рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
@ abiduzz420 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ! рдореИрдВ
@gaearon рдЖрдЧреЗ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝реА рдЙрдкрд▓рдмреНрдзрддрд╛ рд╣реЛрдЧреА
@gaearon рддреНрд╡рд░рд┐рдд рдЕрдкрдбреЗрдЯ: рдореИрдВрдиреЗ BeforeInputEventPlugin
+ FallbackCompositionState
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛/рд╕рдВрдпреЛрдЬрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдореБрдЭреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрднрд╛рд▓ рдорд┐рд▓рд╛ рд╣реИред рдЕрдм рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг/рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрдВрдЬрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдб рдкрдереЛрдВ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╣рд▓рд╛ рдкреАрдЖрд░ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ (10 рджрд┐рд╕рдВрдмрд░ рддрдХ - рдЕрджреНрдпрддрди рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордп рдЪрд╛рд╣рд┐рдП - 12 рджрд┐рд╕рдВрдмрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП)ред
рдмрдврд╝рд┐рдпрд╛, рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
@gaearon рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рддреНрд╡рд░рд┐рдд рдЕрдкрдбреЗрдЯ: рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА getNodeForCharacterOffset-test
рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЧреБрд░реБрд╡рд╛рд░ рддрдХ рдкреАрдЖрд░ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдХреНрдпрд╛ рдпрд╣ рдареАрдХ рд╣реИ?
рд╕реБрдирдиреЗ рдореЗрдВ рддреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ
рдПрдХ рдФрд░ рдиреАрдЪреЗ! https://github.com/facebook/react/pull/11742
@reznord рд╣рдордиреЗ рдЕрднреА рддрдХ рдЖрдкрдХрд╛ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИтАФрдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреБрдЫ рд╢реБрд░реВ рдХрд┐рдпрд╛? рдЕрдЧрд░ рдЖрдк рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╣реИрдВ рддреЛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдФрд░ рдХреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрдВред
рдкрд┐рдВрдЧ @reznord
рдирдорд╕реНрддреЗ @gaearon , рдХреНрдпрд╛ рдореИрдВ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП ReactErrorUtils-test.js
рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдБ?
рдирдорд╕реНрддреЗ, @gaearon рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ ReactErrorUtils-test.js
. рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ
рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ ReactBrowserEventEmitter-test.js рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдБ рдЕрдм рдЪрд▓рддреЗ рд░рд╣рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдкреАрдЖрд░ рд╣реИ https://github.com/facebook/react/pull/11713 , рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !!
рдлрд┐рд░ рд╕реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдЕрднреА рднреА рдХреБрдЫ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@gaearon : ReactErrorUtils-test.js
рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реВрдВ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреАрдЖрд░ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ!
рдЗрд╕реЗ рджреЗрдЦреЗрдВ: https://github.com/facebook/react/pull/11309
рдпрджрд┐ рдЖрдк рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк https://github.com/facebook/react/pull/11309 рдореЗрдВ рджреЛрдиреЛрдВ рдЪрд░реНрдЪрд╛рдПрдБ рдФрд░ рд╕рдореАрдХреНрд╖рд╛рдПрдБ рдкрдврд╝реЗрдВ:
https://github.com/facebook/react/pull/11316
https://github.com/facebook/react/pull/11317
https://github.com/facebook/react/pull/11327
https://github.com/facebook/react/pull/11332
рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╖рдп рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдкреАрдЖрд░ рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред