React: RFClarification: `рд╕реЗрдЯрд╕реНрдЯреЗрдЯ` рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрдпреЛрдВ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдирд╡ре░ 2017  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдореИрдВрдиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдХрд┐ setState рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрдпреЛрдВ рд╣реИред рдФрд░ рдЕрддреАрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдерд╛ рдФрд░ рд╢рд╛рдпрдж рдЕрдм рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ @gaearon рдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдБ :)

рд╡реИрд╕реЗ рднреА, рдпреЗ рдХрд╛рд░рдг рд╣реИрдВ рдЬреЛ рдореИрдВ рдЕрдХреНрд╕рд░ рд╕реБрдирддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ

Async рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП Async рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдЖрд╡рд╢реНрдпрдХ рд╣реИ

рдХрдИ рд▓реЛрдЧ рд╢реБрд░реВ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд░реЗрдВрдбрд░ рджрдХреНрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкреАрдЫреЗ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рд╕рд┐рдВрдХ рдХреЛ рдПрд╕рд┐рдВрдХреНрд╕ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд░рдЦрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рд▓рдЧрддрд╛ рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:

Component.prototype.setState = (nextState) => {
  this.state = nextState
  if (!this.renderScheduled)
     setImmediate(this.forceUpdate)
}

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП mobx-react рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдПрд╕рд┐рдВрдХ рдкреНрд░рдХреГрддрд┐ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ

Async рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд░рд╛рдЬреНрдп _rendered_ рдерд╛

рджреВрд╕рд░рд╛ рддрд░реНрдХ рдЬреЛ рдореИрдВ рдХрднреА-рдХрднреА рд╕реБрдирддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рд░рд╛рдЬреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ _rendered_ рдерд╛, рди рдХрд┐ рд╡рд╣ рд░рд╛рдЬреНрдп рдЬреЛ _requested_ рдерд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдмрд╣реБрдд рдпреЛрдЧреНрдпрддрд╛ рд╣реИред рд╕рдВрдХрд▓реНрдкрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдпрд╣ рдореБрдЭреЗ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдкрд╛рджрди рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реИ, рд░рд╛рдЬреНрдп рддрдереНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЖрдЬ, рдореИрдВ 32 рд╡рд░реНрд╖ рдХрд╛ рд╣реВрдВ, рдФрд░ рдЕрдЧрд▓реЗ рд╡рд░реНрд╖ рдореИрдВ 33 рд╡рд░реНрд╖ рдХрд╛ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рднрд▓реЗ рд╣реА рдорд╛рд▓рд┐рдХ рдШрдЯрдХ рдЗрд╕ рд╡рд░реНрд╖ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реЛ рдпрд╛ рдирд╣реАрдВ :)ред

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

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд▓реЛрдХрди: 2 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ mobx-react рдХрд┐рд╕реА рдиреЗ рднреА рдореБрдЭрд╕реЗ рдпрд╣ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдкреВрдЫрд╛: рдореБрдЭреЗ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд╣реИрдВ? рдпрд╣ рдкреНрд░рд╢реНрди рдмрд╣реБрдд рдмрд╛рд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

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


рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо setState рдХреА рдПрд╕рд┐рдВрдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рднреНрд░рдо рд╕реЗ рдЕрд╡рдЧрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИред рдореБрдЭреЗ рдФрд░ рдмрддрд╛рдПрдБ :)

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

рддреЛ рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдХреБрдЫ рди рдХрд╣рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдорджрджрдЧрд╛рд░ рд╣реЛред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдмреИрдЪ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рд╣ рдореЗрдВ рджреЗрд░реА setState() рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрди: рдкреНрд░рддрд┐рдкрд╛рджрди рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХрдИ рдЕрдкрдбреЗрдЯ рдорд┐рд▓реЗрдВрдЧреЗ рддреЛ рдмреИрдЪ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ click рд╣реИрдВрдбрд▓рд░, рдФрд░ рджреЛрдиреЛрдВ Child рдФрд░ Parent рдХреЙрд▓ setState , рддреЛ рд╣рдо рдлрд┐рд░ рд╕реЗ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ Child рджреЛ рдмрд╛рд░, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдЧрдВрджрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдИрд╡реЗрдВрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ: рд╣рдо рд╡рд╣реА рд╕рдЯреАрдХ рдХрд╛рдо (рдмреИрдЪрд┐рдВрдЧ) рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрд▓рд╣ рдХреЗ рдЕрдВрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ setState рдЕрдкрдбреЗрдЯ рдХреЛ рддреБрд░рдВрдд this.state рдкрд░ рд▓рд┐рдЦ рджреЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрддреНрддрд░ рд╣реИ (рдпрд╛ рддреЛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЯреНрд░реЗрдбрдСрдл рд╣реИрдВ) рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреБрдЫ рдХрд╛рд░рдг рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЧрддрд┐ рдХреА рдЧрд╛рд░рдВрдЯреА

рднрд▓реЗ рд╣реА state рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, props рдирд╣реАрдВ рд╣реИрдВред (рдЬрдм рддрдХ рдЖрдк рдореВрд▓ рдШрдЯрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЖрдк props рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреИрдЪрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред)

рдЕрднреА рд░рд┐рдПрдХреНрдЯ ( state , props , refs ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд╕реНрддреБрдПрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ

рдЬрдм рдЖрдк рдХреЗрд╡рд▓ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ

console.log(this.state.value) // 0
this.setState({ value: this.state.value + 1 });
console.log(this.state.value) // 1
this.setState({ value: this.state.value + 1 });
console.log(this.state.value) // 2

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рд▓реЗ рдЬрд╛ рд╕рдХреЗрдВ:

-this.setState({ value: this.state.value + 1 });
+this.props.onIncrement(); // Does the same thing in a parent

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рдореЗрдВ рдЬреЛ setState() рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд░рд┐рдПрдХреНрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдЖрдк рджреИрдирд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдХрд░реЗрдВрдЧреЗ ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ!

console.log(this.props.value) // 0
this.props.onIncrement();
console.log(this.props.value) // 0
this.props.onIncrement();
console.log(this.props.value) // 0

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореЙрдбрд▓ рдореЗрдВ, this.state рдХреЛ рддреБрд░рдВрдд рдлреНрд▓рд╢ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди this.props рдХреЛ рдирд╣реАрдВред рдФрд░ рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдмрд┐рдирд╛ рддреБрд░рдВрдд this.props рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмреИрдЪрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдЬреЛ, рдорд╛рдорд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред

рдпрд╣ рдХреИрд╕реЗ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдФрд░ рднреА рд╕реВрдХреНрд╖реНрдо рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП props (рдЕрднреА рддрдХ рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ state (рддреБрд░рдВрдд рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд) рд╕реЗ рдбреЗрдЯрд╛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ : https://github.com/facebook/react/issues/122#issuecomment -81856416ред рд░реЗрдлрд░реА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ: https://github.com/facebook/react/issues/122#issuecomment -22659651ред

рдпреЗ рдЙрджрд╛рд╣рд░рдг рдмрд┐рд▓реНрдХреБрд▓ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рд░реЗрдбрдХреНрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реБрдЖ рдХрд░рддреА рдереА рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдиреЙрди-рд░рд┐рдПрдХреНрдЯ рд╕реНрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ: https://github.com/reactjs/react-redux/issues/86 , https://github.com/ Reactjs/react-redux/pull/99 , https://github.com/reactjs/react-redux/issues/292 , https://github.com/reactjs/redux/issues/1415 , https://github. com/reactjs/react-redux/рдореБрджреНрджреЛрдВ/525.

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ MobX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЯрдХрд░рд╛рдП, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЯрдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдЧрд▓рддреА рдорд╛рдирддреЗ рд╣реИрдВред рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ props рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ MobX рдореНрдпреВрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВред

рддреЛ рд░рд┐рдПрдХреНрдЯ рдЖрдЬ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ? рд░рд┐рдПрдХреНрдЯ рдореЗрдВ, this.state рдФрд░ this.props рд╣реА рд╕реБрд▓рд╣ рдФрд░ рдлреНрд▓рд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╣реА рдЕрдкрдбреЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк 0 рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣ рдЙрдард╛рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдУрдУ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдкреВрд░реНрдг рд░рд╛рдЬреНрдп рдЕрджреНрдпрддрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдИ рдмрд╛рд░ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦрдирд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ: https://github.com/facebook/react/issues/122#issuecomment -19888472ред

рдлрд┐рд░ рднреА, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рддреБрд░рдВрдд рдХреБрдЫ рдмрдЧрд╝рд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡рд╕реНрддреБ рдореЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рддреНрдп рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред MobX рдЖрдкрдХреЛ рдмрд╣реБрдд рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ ReactDOM.flushSync(fn) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 16.x рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдпрд╣ props , state , рдФрд░ refs рдмреАрдЪ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдореЙрдбрд▓ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдб рдХреА рдУрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЛ рдКрдкрд░ рдЙрдард╛рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ ред

рд╕рдорд╡рд░реНрддреА рдЕрджреНрдпрддрди рд╕рдХреНрд╖рдо рдХрд░рдирд╛

рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рд░рд┐рдПрдХреНрдЯ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдШрдЯрдХ рдПрдХ рдПрдХрд▓ рдЕрджреНрдпрддрди рдХрддрд╛рд░ рд╣реЛред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ: рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдкрдбреЗрдЯ рдХреЛ this.state рддреБрд░рдВрдд рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдкрдбреЗрдЯ рдЙрд╕реА рд╕рдЯреАрдХ рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ( рд╣рд╛рд╣рд╛ )ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдо "async рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдмрддрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд░ рдПрдВрдб рдбреА рдХреА рдкреНрд░рдХреГрддрд┐ рд╣реИ: рдЖрдк рдПрдХ рдРрд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред

"рдПрд╕рд┐рдВрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ setState() рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХреЛрдИ рд╕рдВрджреЗрд╢ рдЯрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ TextBox рдШрдЯрдХ рдореЗрдВ setState() рдХреЙрд▓реЛрдВ рдХреЛ рддреБрд░рдВрдд рдлрд╝реНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдПрдХ рдирдпрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд MessageBubble рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ (рдЬреИрд╕реЗ рдПрдХ рд╕реЗрдХрдВрдб) рддрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдардк рд╣реЛ рдЬрд╛рдПред рдзрд╛рдЧрд╛ред

рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХреЛ "рдирд┐рдореНрди рдкреНрд░рд╛рдердорд┐рдХрддрд╛" рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдирдХреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рди рд╣реЛрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдмрд╣реБрдд рд░реЛрдорд╛рдВрдЪрдХ рдпрд╛ рдареЛрд╕ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: "рд╣рдореЗрдВ MobX рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реА рдЕрдкрдбреЗрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдЗрддрдиреА рддреЗрдЬрд╝ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд░реА-рд░реЗрдВрдбрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП"ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдЪ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MobX рдХрд┐рддрдирд╛ рддреЗрдЬрд╝ рд╣реИ, рдЖрдкрдХреЛ рдЕрднреА рднреА DOM рдиреЛрдбреНрд╕ рдмрдирд╛рдирд╛ рд╣реИ рдФрд░ рдирдП рдорд╛рдЙрдВрдЯреЗрдб рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рдирд╛ рд╣реИ)ред рдлрд┐рд░ рднреА, рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рдерд╛, рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ рдЬреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЗрди рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдЙрддрдирд╛ рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рджреВрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдо рддреМрд░ рдкрд░ рдЬрдм рдЖрдк рдирдИ рд╕реНрдХреНрд░реАрди рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ рд╕реНрдкрд┐рдирд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред

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

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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐, рд╡рд░реНрддрдорд╛рди рд░рд┐рдПрдХреНрдЯ рдореЙрдбрд▓ рдФрд░ рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рд╕рд╛рде , рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! @acdlite рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рдПрдХ RFC рдкреЛрд╕реНрдЯ рдХрд░реЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ this.state рддреБрд░рдВрдд рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рддреБрд░рдВрдд рдлрд╝реНрд▓рд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рджреГрд╢реНрдп рдХрд╛ "рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг" рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ "рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг" рдЕрднреА рднреА рджреГрд╢реНрдпрдорд╛рди рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╣реИред рдЙрдирдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдкрдбреЗрдЯ рдЯрдХрд░рд╛рдПрдВрдЧреЗред

рдореИрдВ рдЗрд╕ рд╕рдм рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ @acdlite рд╕реЗ рдЧрдбрд╝рдЧрдбрд╝рд╛рд╣рдЯ рдирд╣реАрдВ рдЪреБрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рд░реЛрдорд╛рдВрдЪрдХ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

рд╣рдо рд╕рднреА @gaearon рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@Kaybarax рдЕрд░реЗ, рдпрд╣ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рд╣реИ ;-)

@mweststrate рдУрд╣! рдореЗрд░реА рдЧрд▓рддреАред рдардВрдбрд╛ред

рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдЕрдВрдЧ рдкрд░ рдмрд╛рд╣рд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдЯрд┐рдХ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ setState s рдмреИрдЪ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИред

рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдЫреБрдЯреНрдЯреА рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рд▓реЗрдХрд┐рди рдореИрдВ рд╢рд╛рдпрдж рдордВрдЧрд▓рд╡рд╛рд░ рдХреЛ рдЬрд╛рдКрдБрдЧрд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдБрдЧрд╛ред

рд╕рдорд╛рд░реЛрд╣ enqueueUpdate (рдШрдЯрдХ) {
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЗрдВрдЬреЗрдХреНрд╢рди ();

// рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧ (рдЬреИрд╕реЗ ReactCompositeComponent's
// _renderValidatedComponent) рдорд╛рди рд▓реЗрдВ рдХрд┐ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдиреЗрд╕реНрдЯреЗрдб рдирд╣реАрдВ рд╣реИрдВ;
// рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИред (рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЕрджреНрдпрддрди рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
// рдлрд╝рдВрдХреНрд╢рди, рдЬреИрд╕реЗ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ, рдлреЛрд░реНрд╕рдЕрдкрдбреЗрдЯ, рдЖрджрд┐; рд╕реГрдЬрди рдФрд░
// рд░рд┐рдПрдХреНрдЯрдорд╛рдЙрдВрдЯ рдореЗрдВ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рд┐рдирд╛рд╢ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред)

рдЕрдЧрд░ (!batchingStrategy.isBatchingUpdates) {
рдмреИрдЪрд┐рдВрдЧрд╕реНрдЯреНрд░реЗрдЯреА.рдмреИрдЪреНрдбрдЕрдкрдбреЗрдЯреНрд╕ (рдПрдирдХреНрдпреВрдпреВрдЕрдкрдбреЗрдЯ, рдХрдВрдкреЛрдиреЗрдВрдЯ);
рд╡рд╛рдкрд╕реА;
}

рдЧрдВрджрд╛ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ред рдкреБрд╢ (рдШрдЯрдХ);
рдЕрдЧрд░ (рдШрдЯрдХ._рдЕрдкрдбреЗрдЯрдмреИрдЪрдирдВрдмрд░ == рд╢реВрдиреНрдп) {
рдШрдЯрдХ._рдЕрдкрдбреЗрдЯрдмреИрдЪрдирдВрдмрд░ = рдЕрдкрдбреЗрдЯрдмреИрдЪрдирдВрдмрд░ + 1;
}
}

@mweststrate рд╕рд┐рд░реНрдл 2 рд╕реЗрдВрдЯ: рдпрд╣ рдмрд╣реБрдд рд╣реА рд╡реИрдз рдкреНрд░рд╢реНрди рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рд╕рдордХрд╛рд▓рд┐рдХ рд╣реЛрддрд╛ред
рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рдЬреЛ рднреА рдХрд╛рд░рдг рдереЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдЧреА, рдЬреЛ рдХрд┐ рдХрдорд┐рдпрд╛рдВ рдкреЗрд╢ рдХрд░реЗрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдм рд░рд╛рдЬреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ред

@mweststrate рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рд╡рд╣реА рдкреНрд░рд╢реНрди рдкреВрдЫрд╛: https://discuss.reactjs.org/t/ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ-reasons-behind-setstate-not-being-immediately-visible/8487

рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рднреНрд░рдо рдХреЛ рджреЗрдЦрд╛ рдФрд░ рджреЗрдЦрд╛ рд╣реИред @gaearon рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдордп рд╣реЛ рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ :)

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

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

рддреЛ рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдХреБрдЫ рди рдХрд╣рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдорджрджрдЧрд╛рд░ рд╣реЛред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдмреИрдЪ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рд╣ рдореЗрдВ рджреЗрд░реА setState() рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрди: рдкреНрд░рддрд┐рдкрд╛рджрди рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХрдИ рдЕрдкрдбреЗрдЯ рдорд┐рд▓реЗрдВрдЧреЗ рддреЛ рдмреИрдЪ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ click рд╣реИрдВрдбрд▓рд░, рдФрд░ рджреЛрдиреЛрдВ Child рдФрд░ Parent рдХреЙрд▓ setState , рддреЛ рд╣рдо рдлрд┐рд░ рд╕реЗ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ Child рджреЛ рдмрд╛рд░, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдЧрдВрджрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдИрд╡реЗрдВрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ: рд╣рдо рд╡рд╣реА рд╕рдЯреАрдХ рдХрд╛рдо (рдмреИрдЪрд┐рдВрдЧ) рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрд▓рд╣ рдХреЗ рдЕрдВрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ setState рдЕрдкрдбреЗрдЯ рдХреЛ рддреБрд░рдВрдд this.state рдкрд░ рд▓рд┐рдЦ рджреЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрддреНрддрд░ рд╣реИ (рдпрд╛ рддреЛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЯреНрд░реЗрдбрдСрдл рд╣реИрдВ) рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреБрдЫ рдХрд╛рд░рдг рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЧрддрд┐ рдХреА рдЧрд╛рд░рдВрдЯреА

рднрд▓реЗ рд╣реА state рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, props рдирд╣реАрдВ рд╣реИрдВред (рдЬрдм рддрдХ рдЖрдк рдореВрд▓ рдШрдЯрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЖрдк props рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреИрдЪрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред)

рдЕрднреА рд░рд┐рдПрдХреНрдЯ ( state , props , refs ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд╕реНрддреБрдПрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ

рдЬрдм рдЖрдк рдХреЗрд╡рд▓ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ

console.log(this.state.value) // 0
this.setState({ value: this.state.value + 1 });
console.log(this.state.value) // 1
this.setState({ value: this.state.value + 1 });
console.log(this.state.value) // 2

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рд▓реЗ рдЬрд╛ рд╕рдХреЗрдВ:

-this.setState({ value: this.state.value + 1 });
+this.props.onIncrement(); // Does the same thing in a parent

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рдореЗрдВ рдЬреЛ setState() рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд░рд┐рдПрдХреНрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдЖрдк рджреИрдирд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдХрд░реЗрдВрдЧреЗ ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ!

console.log(this.props.value) // 0
this.props.onIncrement();
console.log(this.props.value) // 0
this.props.onIncrement();
console.log(this.props.value) // 0

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореЙрдбрд▓ рдореЗрдВ, this.state рдХреЛ рддреБрд░рдВрдд рдлреНрд▓рд╢ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди this.props рдХреЛ рдирд╣реАрдВред рдФрд░ рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдмрд┐рдирд╛ рддреБрд░рдВрдд this.props рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмреИрдЪрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдЬреЛ, рдорд╛рдорд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред

рдпрд╣ рдХреИрд╕реЗ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдФрд░ рднреА рд╕реВрдХреНрд╖реНрдо рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП props (рдЕрднреА рддрдХ рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ state (рддреБрд░рдВрдд рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд) рд╕реЗ рдбреЗрдЯрд╛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ : https://github.com/facebook/react/issues/122#issuecomment -81856416ред рд░реЗрдлрд░реА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ: https://github.com/facebook/react/issues/122#issuecomment -22659651ред

рдпреЗ рдЙрджрд╛рд╣рд░рдг рдмрд┐рд▓реНрдХреБрд▓ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рд░реЗрдбрдХреНрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реБрдЖ рдХрд░рддреА рдереА рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдиреЙрди-рд░рд┐рдПрдХреНрдЯ рд╕реНрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ: https://github.com/reactjs/react-redux/issues/86 , https://github.com/ Reactjs/react-redux/pull/99 , https://github.com/reactjs/react-redux/issues/292 , https://github.com/reactjs/redux/issues/1415 , https://github. com/reactjs/react-redux/рдореБрджреНрджреЛрдВ/525.

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ MobX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЯрдХрд░рд╛рдП, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЯрдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдЧрд▓рддреА рдорд╛рдирддреЗ рд╣реИрдВред рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ props рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ MobX рдореНрдпреВрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВред

рддреЛ рд░рд┐рдПрдХреНрдЯ рдЖрдЬ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ? рд░рд┐рдПрдХреНрдЯ рдореЗрдВ, this.state рдФрд░ this.props рд╣реА рд╕реБрд▓рд╣ рдФрд░ рдлреНрд▓рд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╣реА рдЕрдкрдбреЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк 0 рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣ рдЙрдард╛рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдУрдУ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдкреВрд░реНрдг рд░рд╛рдЬреНрдп рдЕрджреНрдпрддрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдИ рдмрд╛рд░ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦрдирд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ: https://github.com/facebook/react/issues/122#issuecomment -19888472ред

рдлрд┐рд░ рднреА, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рддреБрд░рдВрдд рдХреБрдЫ рдмрдЧрд╝рд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡рд╕реНрддреБ рдореЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рддреНрдп рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред MobX рдЖрдкрдХреЛ рдмрд╣реБрдд рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ ReactDOM.flushSync(fn) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 16.x рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдпрд╣ props , state , рдФрд░ refs рдмреАрдЪ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдореЙрдбрд▓ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдб рдХреА рдУрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп рдХреЛ рдКрдкрд░ рдЙрдард╛рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ ред

рд╕рдорд╡рд░реНрддреА рдЕрджреНрдпрддрди рд╕рдХреНрд╖рдо рдХрд░рдирд╛

рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рд░рд┐рдПрдХреНрдЯ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдШрдЯрдХ рдПрдХ рдПрдХрд▓ рдЕрджреНрдпрддрди рдХрддрд╛рд░ рд╣реЛред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ: рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдкрдбреЗрдЯ рдХреЛ this.state рддреБрд░рдВрдд рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдкрдбреЗрдЯ рдЙрд╕реА рд╕рдЯреАрдХ рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ( рд╣рд╛рд╣рд╛ )ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдо "async рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдмрддрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд░ рдПрдВрдб рдбреА рдХреА рдкреНрд░рдХреГрддрд┐ рд╣реИ: рдЖрдк рдПрдХ рдРрд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред

"рдПрд╕рд┐рдВрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ setState() рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХреЛрдИ рд╕рдВрджреЗрд╢ рдЯрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ TextBox рдШрдЯрдХ рдореЗрдВ setState() рдХреЙрд▓реЛрдВ рдХреЛ рддреБрд░рдВрдд рдлрд╝реНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдПрдХ рдирдпрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд MessageBubble рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ (рдЬреИрд╕реЗ рдПрдХ рд╕реЗрдХрдВрдб) рддрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдардк рд╣реЛ рдЬрд╛рдПред рдзрд╛рдЧрд╛ред

рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХреЛ "рдирд┐рдореНрди рдкреНрд░рд╛рдердорд┐рдХрддрд╛" рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдирдХреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рди рд╣реЛрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдмрд╣реБрдд рд░реЛрдорд╛рдВрдЪрдХ рдпрд╛ рдареЛрд╕ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: "рд╣рдореЗрдВ MobX рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реА рдЕрдкрдбреЗрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдЗрддрдиреА рддреЗрдЬрд╝ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд░реА-рд░реЗрдВрдбрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП"ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдЪ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MobX рдХрд┐рддрдирд╛ рддреЗрдЬрд╝ рд╣реИ, рдЖрдкрдХреЛ рдЕрднреА рднреА DOM рдиреЛрдбреНрд╕ рдмрдирд╛рдирд╛ рд╣реИ рдФрд░ рдирдП рдорд╛рдЙрдВрдЯреЗрдб рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рдирд╛ рд╣реИ)ред рдлрд┐рд░ рднреА, рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рдерд╛, рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ рдЬреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЗрди рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдЙрддрдирд╛ рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рджреВрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдо рддреМрд░ рдкрд░ рдЬрдм рдЖрдк рдирдИ рд╕реНрдХреНрд░реАрди рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ рд╕реНрдкрд┐рдирд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред

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

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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐, рд╡рд░реНрддрдорд╛рди рд░рд┐рдПрдХреНрдЯ рдореЙрдбрд▓ рдФрд░ рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рд╕рд╛рде , рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! @acdlite рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рдПрдХ RFC рдкреЛрд╕реНрдЯ рдХрд░реЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ this.state рддреБрд░рдВрдд рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рддреБрд░рдВрдд рдлрд╝реНрд▓рд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рджреГрд╢реНрдп рдХрд╛ "рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг" рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ "рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг" рдЕрднреА рднреА рджреГрд╢реНрдпрдорд╛рди рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╣реИред рдЙрдирдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдкрдбреЗрдЯ рдЯрдХрд░рд╛рдПрдВрдЧреЗред

рдореИрдВ рдЗрд╕ рд╕рдм рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ @acdlite рд╕реЗ рдЧрдбрд╝рдЧрдбрд╝рд╛рд╣рдЯ рдирд╣реАрдВ рдЪреБрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рд░реЛрдорд╛рдВрдЪрдХ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

рдирд┐рд╢рд╛рди

рдзрдиреНрдпрд╡рд╛рдж, рдбреИрдиред

рдореИрдВ тЭдя╕П рдпрд╣ рдореБрджреНрджрд╛ред рдХрдорд╛рд▓ рдХрд╛ рд╕рд╡рд╛рд▓ рдФрд░ рдХрдорд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдмред рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рдерд╛, рдЕрдм рдореБрдЭреЗ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдзрдиреНрдпрд╡рд╛рдж, рдбреИрдиред

рдореИрдВ рдЗрд╕реЗ asyncAwesome setState рдХрд╣рддрд╛ рд╣реВрдВ: рдореБрд╕реНрдХрд╛рди:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╕рд┐рдВрдХ рдСрдкрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдареАрдХ рд╣реИ, рдПрд╕рд┐рдВрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯреЗрдВред рдПрд╕рд┐рдВрдХ рдХреЛрдб рд╕реЗ рд╕рд┐рдВрдХ рдХреЛрдб рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ (рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд░реИрдкрд░ рдЪрд╛рд╣рд┐рдП) рд░рд┐рд╡рд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ (рдЬрд┐рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреВрд░реНрдг рдкреБрдирд░реНрд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдереНрд░реЗрдбрд┐рдВрдЧ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ, рдЬреЛ рдХрд┐ рд╣рд▓реНрдХреЗ рд╡рдЬрди рдкрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред

@gaearon рд╡реНрдпрд╛рдкрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ ("рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЛрдИ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИ")ред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЪреЗрдд рдирд┐рд░реНрдгрдп рдХреИрд╕реЗ рд╣реИ :)ред рд╡реНрдпрд╛рдкрдХ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ!

рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкреНрд░реЙрдкреНрд╕ рд╕реЗ рдЙрддрдирд╛ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ MobX рдореНрдпреВрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рд╕рдЪ рд╣реИ, MobX рдореЗрдВ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рд░реНрдл рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЛрдореЗрди рдбреЗрдЯрд╛ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЙрдкреНрд╕ рдореЗрдВ рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЛрдореЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдореЗрдВ рдЬреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╕реЗ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@gaearon рд╡рд┐рд╕реНрддреГрдд рдФрд░ рдорд╣рд╛рди рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣рд╛рдБ рдЕрднреА рднреА рдХреБрдЫ рдХрдореА рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рд▓реЗрдХрд┐рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред

рдЬрдм рдШрдЯрдирд╛ "рдЖрдЙрдЯрд╕рд╛рдЗрдб рд░рд┐рдПрдХреНрдЯ" рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реЗрдлрд░реА рдкрд░ рд╢рд╛рдпрдж addEventListener рдорд╛рдзреНрдпрдо рд╕реЗред рдлрд┐рд░ рдХреЛрдИ рдмреИрдЪрд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИред
рдЗрд╕ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }

  componentDidMount() {
    this.refBtn.addEventListener("click", this.onClick);
  }

  componentWillUnmount() {
    this.refBtn.removeEventListener("click", this.onClick);
  }

  onClick = () => {
    console.log("before setState", this.state.count);
    this.setState(state => ({ count: state.count + 1 }));
    console.log("after setState", this.state.count);
  };

  render() {
    return (
      <div>
        <button onClick={this.onClick}>React Event</button>
        <button ref={ref => (this.refBtn = ref)}>Direct DOM event</button>
      </div>
    );
  }
}

рдЬрдм рд╣рдо "рд░рд┐рдПрдХреНрдЯ рдЗрд╡реЗрдВрдЯ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВрдЧреЗ, рддреЛ рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ:
"before setState" 0
"after setState" 0
рдЬрдм рджреВрд╕рд░рд╛ рдмрдЯрди "рдбрд╛рдпрд░реЗрдХреНрдЯ рдбреЛрдо рдЗрд╡реЗрдВрдЯ" рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ:
"before setState" 0
"after setState" 1

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

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рд╣реИрдВ? :рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛:

@ sag1v рд╣рд╛рд▓рд╛рдВрдХрд┐ рдереЛрдбрд╝рд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдирдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рд╢рд╛рдпрдж рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕реЗ рдЗрд╕ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХрд╣реАрдВ рдкрд░ #11527 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

@sag1v @gaearon рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╣реА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдерд╛ https://twitter.com/dan_abramov/status/949992957180104704 ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЙрдирдХреА рд░рд╛рдп рднреА рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рдЬрд╡рд╛рдм рджреЗрдЧреАред

@mweststrate рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ " setState рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрдпреЛрдВ рд╣реИ?"ред
рдЪреВрдВрдХрд┐ рдпрд╣ рдЪрд░реНрдЪрд╛ setState "async" рдмрдирд╛рдиреЗ рдкрд░ рдХрд┐рдП рдЧрдП рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕реЗ "рд╕рд┐рдВрдХ" рдХрдм рдФрд░ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рджрд┐рд▓рд╛рдпрд╛ рдХрд┐ рдореЗрд░реА рдкреЛрд╕реНрдЯ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: рдкрд▓рдХ:

@Kaybarax рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░рд╢реНрди "_рдХрдм рд╣реИ рдпрд╣ рд╕рд┐рдВрдХ_" рдерд╛ рдФрд░ рди рдХрд┐ "_ рдпрд╣ рд╕рд┐рдВрдХ_ рдХреНрдпреЛрдВ рд╣реИ"?ред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред :рдореБрд╕реНрдХреБрд░рд╛рдУ:

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рдШрдЯрдирд╛ рдХрдм рдФрд░ рдХреИрд╕реЗ рдЖрдЧ рд▓рдЧреЗрдЧреА, рдЗрд╕рд▓рд┐рдП "рдкреИрдирд┐рдХ-рдореЛрдб" рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рддреБрд░рдВрдд рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛

рдХреА рддрд░рд╣ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ this.state рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╡рд╛рд▓ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЬреЛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдмреИрдЪрд┐рдВрдЧ рдХреЛ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рдЕрдВрджрд░ рдЕрдкрдбреЗрдЯ рдХреЛ рдмреИрдЪ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╢реАрд░реНрд╖ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рдкрд░ "рдмреИрдарддрд╛ рд╣реИ" рдФрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рд░рд┐рдПрдХреНрдЯ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрдм рдЪрд▓реЗ рд╣реИрдВред рдЙрд╕ рд╕рдордп рдпрд╣ рдЕрдкрдбреЗрдЯ рдХреЛ рдлреНрд▓рд╢ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд░рд┐рдПрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЕрдкрдбреЗрдЯ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдмрдирд╛рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдЕрдиреНрдп рдЕрдкрдбреЗрдЯ рдЬрд▓реНрдж рд╣реА рд╣реЛрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВред

рд░рд┐рдПрдХреНрдЯ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдпреЛрдЬрдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХреЛ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдиреЗ рдХреА рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рддреБрд░рдВрдд рдПрдХ рд╕рд╛рде рдлрд╝реНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯ-рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░) рдПрдХрддреНрд░рд┐рдд рдФрд░ рдмреИрдЪ рд╣реЛ рдЬрд╛рдПрдВред рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/facebook/react/issues/11171#issuecomment -357945371ред

рд╡рд┐рд╕реНрдордпрдХрд╛рд░реА!

рдЙрд╕ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ рдХреЛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ рд╣рдореЗрдВ рдЬреНрдЮрд╛рди рджреЗ рд░рд╣реЗ рд╣реИрдВред

рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрд╛ ред рдзрдиреНрдпрд╡рд╛рдж

рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕реВрддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ MobX рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдРрдк рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХреНрд▓реЛрдЬрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЦреЛрдЬ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд░рд┐рдПрдХреНрдЯ рд╡рд┐рдХрд▓реНрдк (рдЬрд┐рд╕реЗ рд░реЗрд╕реНрдкреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдмрдирд╛рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ Redux рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рдХрдо рд╕рдордп, рдФрд░ рдореИрдВ рд░реАрдЬрд╝рдирдПрдордПрд▓ рдкрд░ рджрд╛рдВрд╡ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВред

рд░рд┐рдПрдХреНрдЯ рдФрд░ рдлрдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдПрдлрдкреА) рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдлрдкреА рдореЗрдВ рдХрд╛рдиреВрдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреМрд╢рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХреЛрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реБрджреНрдз рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИред рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЧрд▓реЗ рд▓рдЧрд╛рдХрд░, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдбреЛрдо рдФрд░ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ (рднреА MobX рдХреЗ рдЕрдиреБрдХреВрд▓) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рд╢рдХреНрддрд┐ рд╣реИ, рдЬреЛ рдЗрд╕ рдмреАрдЪ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрд╢реБрджреНрдз рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рдХреНрд▓реЛрдЬрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХреА, рдЕрдЧрд░ рд░рд┐рдПрдХреНрдЯ рд╢реБрджреНрдз рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдореМрдЬреВрджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рд╣реИ, рдЬрд┐рдирдХреЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИрдВред

рддреЛ рд░реЗрд╕реНрдкреЛ (рдореЗрд░рд╛ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди) рдореЗрдВ, рдореЗрд░реЗ рджреЛ рд▓рдХреНрд╖реНрдп рдереЗ рдЬреЛ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, 1) view = f(store) рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рд░рд╛рдЬреНрдп рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ; 2) рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рд╕рднреА рдШрдЯрдХ рдпреВрдЖрдИ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдЯреЛрд░ рдореЗрдВ рдШрдЯрдХ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ paths рд╕рд╛рде рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдмреАрдЪ рдореИрдВ рдХреНрд▓реЛрдЬрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд░рд╛рдЬреНрдп рдЕрдкрдбреЗрдЯ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред

рддреЛ рдореИрдВрдиреЗ рдЬреЛ рд╕реАрдЦрд╛: рд╕реНрдерд╛рдиреАрдп рд░рд╛рдЬреНрдп рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдиреАрдЪреЗ рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рд░рд╛рдЬреНрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдЧрд╣рд░реЗ рд╕реНрддрд░реЛрдВ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рддреЛ, MobX рд▓реЛрдЧ OOP рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рд╣реИ, рдпрд╛ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╣реИ?

рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рднрд╡рд┐рд╖реНрдп рдФрд░ рдЗрд╕рдХреА рдПрд╕рд┐рдВрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ:
https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react-16.html

рджрд╛рди, рддреБрдо рдореЗрд░реЗ рдЖрджрд░реНрд╢ рд╣реЛ..... рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

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

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

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

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

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

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

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