React: рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╡реНрдпрдХреНрдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЕрдХреНрддреВре░ 2017  ┬╖  133рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рдпрд╣ рдПрдХ рдорд╣рд╛рди рдпреЛрдЧрджрд╛рди рдЕрд╡рд╕рд░ рд╣реИред
рд╣рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ react , react-dom , react-dom/test-utils , react-test-renderer , рдЖрджрд┐ рдЬреИрд╕реЗ npm рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдЬреИрд╕реЗ SyntheticEvent рдирд╣реАрдВ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ReactDOMComponentTree ред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ "рдЦрд░рд╛рдм" рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА TODO рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рди рдХрд░реЗрдВред

рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

  1. рдиреАрдЪреЗ рд▓рд╛рд╡рд╛рд░рд┐рд╕ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ // TODO: can we express this test with only public API? рдЦреЛрдЬреЗрдВред
  2. рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
  3. рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред

рдЪрд░рдг 3 рдХреБрдЫ рд╕реЛрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдЖрдо рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдРрдк рдореЗрдВ рдХреИрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ! рдпрджрд┐ рдЖрдк рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рд╣рдо рд╡рд┐рдЪрд╛рд░-рдордВрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рд░рд▓ рдПрдХ-рд▓рд╛рдЗрдирд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреБрдЫ рддреЛ рдЕрд╕рдВрднрд╡ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рддрдХ рдкрд╣реБрдБрдЪрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╢реЛрдз рдЕрднреА рднреА рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рдЗрдиреНрд╣реЗрдВ рдЖрдЬрдорд╛рдПрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ:

рдЕрджреНрдпрддрди: рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЕрднреА рд▓рд┐рдП рдЧрдП рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рддреЛ рд╡реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

  • [ ] ReactBrowserEventEmitter-test.js ( @madeinfree рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рджреЗрдЦреЗрдВ https://github.com/facebook/react/issues/11299#issuecomment-355188567)
  • [ ] getNodeForCharacterOffset-test.js (@accordeiro рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)
  • [ ] ReactErrorUtils-test.js (@reznord рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)
  • [x] BeforeInputEventPlugin-test.js + FallbackCompositionState-test.js (@GordyD рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)
  • [x] validateDOMNesting-test.js (@anushreesubramani рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11742
  • [x] ReactIncrementalPerf-test.js (@dphurley рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11724
  • [x] SelectEventPlugin-test.js (@skiritsis рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/issues/11299
  • [x] ReactTreeTraversal-test.js (@timjacobi рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11664
  • [x] SyntheticKeyboardEvent-test.js + getEventCharCode-test.js (@aarboleda1 рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)
  • [x] escapeTextContentForBrowser-test.js (@jeremenichelli рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11331
  • [рдПрдХреНрд╕] inputValueTracking-test.js
  • [x] quoteAttributeValueForBrowser-test.js (@jeremenichelli рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11331
  • [x] ReactDOMComponent-test.js (@AudiOdi рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11337
  • [x] ReactDOMComponentTree-test.js (@GordyD рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11383
  • [x] ReactDOMEventListener-test.js (@enapupe рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11327
  • [x] ReactDOMInput-test.js (@SadPandaBear рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11309
  • [x] ReactDOMServerIntegration-test.js (@minerado рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)
  • [x] setInnerHTML-test.js (@silvetrijonathan рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11385
    https://github.com/facebook/react/pull/11631
  • [x] getEventKey-test.js (@mjw56 рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11317
  • [x] SyntheticClipboardEvent-test.js (@smaniotto рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11365
  • [x] SyntheticEvent-test.js (@timjacobi рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11525
  • [x] SyntheticWheelEvent-test.js (@douglasgimli рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11367
  • [x] ChangeEventPlugin-test.js (@ рдПрдерди-рдЕрд░реЛрд╡реБрдб рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11333
  • [x] EnterLeaveEventPlugin-test.js (@accordeiro рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛) https://github.com/facebook/react/pull/11316
  • [x] ReactCoroutine-test.js (@jstejada рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)
  • [x] ReactFiberHostContext-test.js (@adsonpleal рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛)

рдкрд╣рд▓реА рдмрд╛рд░ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛?

рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдо рддрдп рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред


medium good first issue (taken)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреАрдЖрд░ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ!

рдЗрд╕реЗ рджреЗрдЦреЗрдВ: 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

рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╖рдп рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдкреАрдЖрд░ рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА 133 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ рдирд┐рдкрдЯ рд╕рдХрддрд╛ рд╣реВрдВред

рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛! рдпрджрд┐ рдЖрдк рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдереНрд░реЗрдб рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдЙрд╕реА рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рди рдХрд░реЗред

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рджреЗрдЦреВрдВрдЧрд╛ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдвреВрдВрдвреВрдВрдЧрд╛!

рдореБрдЭреЗ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ

рдореИрдВрдиреЗ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреАред рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реЗ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╕реМрдВрдк рджреВрдВрдЧрд╛ред

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) @accordeiro . рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛
  • [ ] ReactBrowserEventEmitter-test.js (5/5) @madeinfree . рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛
  • [ ] BeforeInputEventPlugin-test.js + FallbackCompositionState-test.js (5/5, рд╕рдВрдпреБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) @GordyD рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛
  • [x] SelectEventPlugin-test (2/5) @skiritsis . рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛
  • [x] 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 рдореЗрд░рд╛ рдХреЛрдб рдЕрднреА рднреА рдПрдХ рд╡рд╛рдЗрдк рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реВрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдореЗрд░реЗ рдХреЛрдб рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рдВрджреЗрд╣реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЬреЛ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдпрд╛ рд╣реИ рд╡рд╣ рд╕рд╣реА рд╣реИ?
  2. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдореМрдЬреВрджрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╕рднреА рдЯреИрдЧ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рд╡рд┐рд╢реЗрд╖ рдФрд░ рд╕реНрд╡рд░реВрдкрдг рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рд╕реЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
  3. рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде 'рдХрд┐рд╕реА рднреА рдЯреИрдЧ рдХреЛрдИ рд╕рдВрджрд░реНрдн' рдкрд░реАрдХреНрд╖рдг рдХреЗ 'рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ' рднрд╛рдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ isTagValidInContext() рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╣реАрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

@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 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕ рд╕рдордп рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рднреА рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЧрдВрднреАрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ:

https://github.com/facebook/react/blob/8cbc16f0faedafe4f7424b286af52dafd7a79587/packages/react-dom/src/__tests__/validateDOMNesting-test.internal.js#L144 -L145

рд▓реЗрдХрд┐рди рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдм рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХрднреА рдЪреЗрддрд╛рд╡рдиреА рди рджреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдПрдХ рдХреЛрдб рдкрде рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ 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 рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kocokolo picture kocokolo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MoOx picture MoOx  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

trusktr picture trusktr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jmullo picture jmullo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ