React: рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ (рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЬреВрди 2014  ┬╖  139рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

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

Component API Server Rendering Backlog Feature Request

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

рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ JSConf рдЖрдЗрд╕рд▓реИрдВрдб рдореЗрдВ рдПрдХ рднрд╛рд╖рдг рджрд┐рдпрд╛ рдерд╛ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдЧрд╛рдореА async рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ (рджреВрд╕рд░рд╛ рднрд╛рдЧ рджреЗрдЦреЗрдВ): https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react -16.рдПрдЪрдЯреАрдПрдордПрд▓ред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЕрдм @acdlite рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдХреИрд╕реЗ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдЙрддреНрддрд░реЛрддреНрддрд░ рдлреНрд▓рд╢рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИрдВ: https://www.youtube.com/watch?v= z-6JC0_cOns

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрди рд╡рд╛рд░реНрддрд╛рдУрдВ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдирдВрджрд┐рдд рд╣реЛрдВрдЧреЗ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдпрд╛ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рдгрдиреАрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

рдореБрдЦреНрдп рдХрд╛рд░рдг (рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ) рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░, рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдХреЗрддрдХ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред (рдпрд╣ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВред)

рдРрд╕реЗ 2 рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд┐рдирд╛ рдореБрдЭреЗ рд╣рд▓ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ:

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

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрд╕рд┐рдВрдХ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдлрд╛рдЗрдмрд░, рдФрд░ рдХреИрд╢ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЪрд╛рд▓ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рд╡реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл _hackish_ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдХреЛрд░ рдореЗрдВ рд╣реА рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмреЗрд╣рд┐рдЪрдХ рд░рдВрдЧ рджреЗрдВ, @fdecampredon рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ componentWillMount async рд╣реИ рдФрд░ рдЖрдк рддреБрд░рдВрдд рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рддрдм рддрдХ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЕрднреА рддрдХ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд░реЗрдВрдбрд░ рдореЗрдВ рдХреБрдЫ рднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдП? (рд╣рд╛рдБ рдореБрдЭреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдорд┐рд▓рддрд╛ рд╣реИ) рд╕рд╛рде рд╣реА, рдЕрдЧрд░ componentWillMount рдЖрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЙрдкреНрд╕ рдмрджрд▓ рдЬрд╛рдП рддреЛ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдореЗрд░реЗ рдХрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдПрд╕рд┐рдВрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЖрдк рд╕рднреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рд╡рд╣ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рддрднреА рдЖрдк React.renderComponent рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣реА рд╕рдорд╛рдзрд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдбред рдпрджрд┐ рдХреЛрдИ async рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░рд╕реНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдорд┐рд▓рддреА рд╣реИред

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

рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмреЗрд╣рд┐рдЪрдХ рд░рдВрдЧ рджреЗрдВ, @fdecampredon рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ

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

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

рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░реВрдк рдореЗрдВ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ 'рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп' рдШрдЯрдХ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдлреНрд▓рдХреНрд╕ рдирдореВрдиреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдирдореВрдиреЗ рдореЗрдВ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЯреВрдбреВ рдХреА рд╕реВрдЪреА рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рди рд╣реИ, рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдерд╛, рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реА рдмрд╛рд░ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХреЗ рд░реЗрдВрдбрд░ рдХрд░реЗрдВрдЧреЗ (рдФрд░ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХреЛ рдвреАрд▓рд╛ рдХрд░ рджреЗрдВрдЧреЗ) рд╕рд░реНрд╡рд░ рд╕реЗ рдорд╛рд░реНрдХрдЕрдк)ред

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

рд╢рд╛рдпрдж рдпрд╣ рдХрд┐ рдореБрдЭреЗ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдорд┐рд▓рддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡реЗрдм рдкрд░ рдХреБрдЫ рдЪрд░реНрдЪрд╛/рдирдореВрдирд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ:

  • рдХреБрдЫ рдирдореВрдиреЗ рдореЗрдВ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @petehunt рдиреЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╕реНрдЯреЗрдб-рд░рд╛рдЙрдЯрд░ willTransitionTo рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рддрдВрддреНрд░ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдЪрд░реНрдЪрд╛рдУрдВ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИред
  • RRouter рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реАрдлрд╝реЗрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рддрдВрддреНрд░ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдШрдЯрдХ рдХреЛ рд░реЗрдВрдбрд░/рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
  • рдФрд░ рдЕрдВрдд рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-async рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ред

@fdecampredon рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╕реНрдЯреЗрдб-рд░рд╛рдЙрдЯрд░ рдореЗрдВ willTransitionTo рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _not_ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдП UI рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

@fdecampredon рд╣рд░ рдХреЛрдИ рдЕрднреА рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИ рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдкрд░ рджреЗрд╡реЛрдВ рдиреЗ рдЗрд╕рдореЗрдВ рдЦреБрдж рдХреЛ рдХреБрдЫ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди? рдореИрдВрдиреЗ рдЕрднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХреА рд╣реИ рдФрд░ рдореИрдВ рддреБрд░рдВрдд рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рдРрдкреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрдЭрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдпрд╣ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рдХрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдПрд╕рд┐рдВрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЖрдк рд╕рднреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рд╡рд╣ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рддрднреА рдЖрдк React.renderComponent рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣реА рд╕рдорд╛рдзрд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдбред рдпрджрд┐ рдХреЛрдИ async рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░рд╕реНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдорд┐рд▓рддреА рд╣реИред

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

рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рд╣реИ рддреЛ рд░рд┐рдПрдХреНрдЯ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рд╕реЙрд▓реНрдпреВрд╢рди / рд╡реНрдпреВ рд▓реЗрдпрд░ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ @fdecampredon рдХреЛ рд╕рдордЭрддрд╛

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

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

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

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _hackish_ рд╣реИред

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

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

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

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди "рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдШрдЯрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рд╣рдо рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдФрд░ "рдкреБрдирдГ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛" "рд╡рд╣ рдШрдЯрдХ рд╕рдмрдЯреНрд░реА рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрд╕ рдкреЗрдбрд╝ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред тАФ @mridgway

рд╣рд╛рдБ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░ рджреЛ рдмрд╛рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрдХреНрд╕рд╕ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдкреБрдирд░реНрд▓реЗрдЦрди рд╣реИ рдХрд┐ рдХреИрд╕реЗ mountComponent рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдбреАрдУрдПрдо рдкрд░ рдШреБрдорд╛рдиреЗ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдкреЗрдбрд╝ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдкреЗрдбрд╝ рдХреЛ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ React.renderToString рд╡реИрд╕реЗ рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЙрд╕ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдкреЗрдбрд╝ рдХреЛ рд▓реЗрдирд╛ рдФрд░ рдЙрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛/рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЗрд╕ рдкрд░ рдХреЛрд░ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ ReactContext рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ рддрд╛рдХрд┐ рдПрд╕рд┐рдВрдХреНрд╕ рдореБрджреНрджреЛрдВ рдХрд╛ рдХрд╛рд░рдг рди рдмрдиреЗред рдХреНрдпрд╛ рдРрд╕реЗ рдЕрдиреНрдп рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рднреА рдореБрджреНрджреЛрдВ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

@mridgway рдЕрдЧрд░ рдореБрдЭреЗ рд╡реИрд╢реНрд╡рд┐рдХ ReactContext рдЧрд▓рдд рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдПрдХ рдЕрдиреБрдХреВрд▓ рдЪреАрдЬ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ 0.14 рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреАред рд▓реЗрдХрд┐рди рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реЛ рд╕рдХрддреА рд╣реИред

@gaearon рд╣рд╛рдБ, рдпрд╣реА рд╡рд╣ рдЕрд░реНрде рд╣реИ рдЬреЛ рдореБрдЭреЗ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╕реЗ рдорд┐рд▓рд╛ рд╣реИред

:+1: рдЗрд╕ рдПрдЯреАрдПрдо рдХреЗ рд▓рд┐рдП react-router рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред @mridgway рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рд╣реА рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрдВрдбрд▓рд░ (рдЬреИрд╕реЗ рд╡реЗрдмрдкреИрдХ) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рдХреЛрдб рднрд╛рдЧ рдХреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЯрд┐рдХрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ - https://github.com/rackt/react-router/issues/1402 - рдПрд╕рд┐рдВрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рд╢реВрдиреНрдп рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рдЕрднреА рддрдХ рдкрд╣рд▓реЗ рдореЗрдВ рд▓реЛрдб рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ рдкрд╛рд╕ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк DOM рдХреЗ рдореВрд▓ рдореЗрдВ <noscript> рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЪреЗрдХрд╕рдо рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬрд▓реНрджреА рд╕реЗ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдФрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЦрд░рд╛рдм рд╣реЛрдиреЗ рдкрд░ рдпреВрдЖрдИ рдореЗрдВ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдЙрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ> 30 рдХреЗрдмреА)

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

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

<WaitFor for={MyAsyncLoadedCompSignal} until={...} then={() => <MyAsyncLoadedComp ... />} /> рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдпреЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рд╣реИрдВ рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ async рд╕рд╛рдорд╛рди рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

import React from 'react';
import Layout from './components/Layout';
import NotFoundPage from './components/NotFoundPage';
import ErrorPage from './components/ErrorPage';

const routes = {

  '/': () => new Promise(resolve => {
    require(['./components/HomePage'], HomePage => { // Webpack's script loader
      resolve(<Layout><HomePage /></Layout>);
    });
  }),

  '/about': () => new Promise(resolve => {
    require(['./components/AboutPage'], AboutPage => { // Webpack's script loader
      resolve(<Layout><AboutPage /></Layout>);
    });
  })

};

const container = document.getElementById('app');

async function render() {
  try {
    const path = window.location.hash.substr(1) || '/';
    const route = routes[path];
    const component = route ? await route() : <NotFoundPage />;
    React.render(component, container);
  } catch (err) {
    React.render(<ErrorPage error={err} />, container);
  }
}

window.addEventListener('hashchange', () => render());
render();

рд╡реЗрдмрдкреИрдХ рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рджреЗрдЦреЗрдВ, рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд░рд┐рдПрдХреНрдЯ.рдЬреЗрдПрд╕ рд░реВрдЯрд┐рдВрдЧ рдФрд░ рд░рд┐рдПрдХреНрдЯ-рд░реВрдЯрд┐рдВрдЧ (рдЬрд▓реНрдж рд╣реА рдЖ рд░рд╣рд╛ рд╣реИ)

@syranide рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛

рдЕрдЧрд░ рд╣рдордиреЗ <WaitFor ... /> рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рдпрд╛, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд░реЗрдВрдбрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдбреЛрдо рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдЕрднреА рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ/рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ?

рдЕрдЧрд░ рд╣рдордиреЗ рдХрд┐рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо рдЕрднреА рднреА рдкрд╣рд▓реЗ рд░реЗрдВрдбрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдбреЛрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрднреА рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ/рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рдЬрд╛рдПрдЧрд╛?

рдпрджрд┐ рдЖрдк рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ) рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ рдЬрд┐рди рдкрд░ рдЖрдк рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реЗрдмрдкреИрдХ рдЗрд╕ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХреЛ require.resolve ред

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

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

рдореИрдВ рдЙрд╕ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛, require.resolve рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдпрд╣ рдереА рдХрд┐ рдпрд╣ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрдИрдбреА рдХрд╛ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд▓реБрдХрдЕрдк рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреА рдпрд╛рддреНрд░рд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереА? рд╣рдо рдЕрдкрдиреЗ рдЪрдВрдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП require.ensure рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдХрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдорд╛рдирдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

const history = new BrowserHistory();

if (typeof history.setup === "function") {
    history.setup();
}

Router.run(routes, history.location, (err, initialState, transition) => {
    React.render(<Provider redux={redux}>{() => <Router key="ta-app" history={history} children={routes} />}</Provider>, document.getElementById('ta-app'));
});

рдореИрдВ рдЙрд╕ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭред рд╕рдорд╛рдзрд╛рди рдпрд╣ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрдИрдбреА рдХрд╛ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд▓реБрдХрдЕрдк рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреА рдпрд╛рддреНрд░рд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереА? рд╣рдо рдЕрдкрдиреЗ рдЪрдВрдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП requ.ensure рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣рд╛рдБ рдореЗрд░рд╛ рдорддрд▓рдм require.ensure ред рдХреЙрд▓рдмреИрдХ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреЗрд╡рд▓ рд░реЗрдВрдбрд░/рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдбрд╛рд▓рдиреЗ рдХреА рдмрд╛рдд рд╣реИред

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

рдЖрдк рд╕рд╣реА рд╣реИрдВ рдХрд┐ require.ensure рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдВрддрд┐рдо рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд░рд╣реЗ рдорд╛рд░реНрдЧ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╕реАрдзреЗ рд░рд╛рдЙрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдШрдЯрдХ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдЬреЛ рдЗрд╕реЗ рд░реЗрдВрдбрд░ рдЯреНрд░реА рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдКрдкрд░ рдореЗрд░реЗ рд╣реИрдХ рдХреЗ рдмрд┐рдирд╛ рд╣рдо рд╕рдм рдХреБрдЫ async рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреЗрдбрд╝ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВ (рдпрд╛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рддрд░реНрдХ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛)ред

рдЖрдк рд╕рд╣реА рд╣реИрдВ рдХрд┐ requ.ensure рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдВрддрд┐рдо рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╕реАрдзреЗ рд░рд╛рдЙрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдШрдЯрдХ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдЬреЛ рдЗрд╕реЗ рд░реЗрдВрдбрд░ рдЯреНрд░реА рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдКрдкрд░ рдореЗрд░реЗ рд╣реИрдХ рдХреЗ рдмрд┐рдирд╛ рд╣рдо рд╕рдм рдХреБрдЫ async рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреЗрдбрд╝ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВ (рдпрд╛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рддрд░реНрдХ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛)ред

рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ setRoute(...) => require.ensure([], function() { require(...); setRoute(...); }) рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдХ рдФрд░ рд╕реНрддрд░ рдХреЗ рд╕рдВрдХреЗрдд рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВред рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдирдХреНрд╢рд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП async require.ensure рд▓реЛрдбрд░ред рдПрдХ рд╕рд╣рд╛рдпрдХ рд▓рд┐рдЦреЗрдВ function asyncSetRoute(...) { loadRoute(route, function() { setRoute(...); }} , рдЕрдм рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп asyncSetRoute рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЬрдм рддрдХ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рддрдм рддрдХ рдпрд╣ рд░рд╛рдЙрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдЧрд╛ред

рдЫрджреНрдо рдХреЛрдб рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЧреНрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХреЛ рдпрд╣ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢рд╛рдпрдж рдирд╣реАрдВ ... рд╢рд╛рдпрдж рдпрд╣ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рд╕рд╣рд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдШрдВрдЯреЛрдВ рд╢реЛрдз рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрднреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ _impossible _ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ (?) рдирд╣реАрдВ рдЦрд┐рд▓рд╛рддреЗред

рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди:
рдП. рд╕реНрдЯреЛрд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рднрд░реЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдмрдирд╛рдПрдВ

рдмреА. рдПрд╕рд┐рдВрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛ рдПрдХ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдКрдкрд░ рд╕реЗ рд╕рдм рдХреБрдЫ рдПрдХ рдбреЗрдЯрд╛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝реАрдб рдХрд░реЗрдВред

рдкреБрди: 'рдП'ред рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдкрдХреА рд░реЗрдВрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реА рджрд┐рдЦреЗрдЧреАред рдореБрдЭреЗ рдЕрдкрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧреНрд░рд╣/рдореЙрдбрд▓/рдПрдкреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдПрд╕рд┐рдВрдХреНрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рдХреЗ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд┐рдВрдХ рдХреИрд╕реЗ рдХрд░реВрдВ?

рдкреБрди: 'рдмреА'ред рдореВрд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ рдХреА рддрд░рд╣ рд╣реА рд╕рдорд╕реНрдпрд╛ред рдХреНрдпрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ JSONs рдмрдирд╛рдиреЗ рдкрдбрд╝ рд░рд╣реЗ рд╣реИрдВ?

рдЬрдм рд╣рдо рд░рд┐рдПрдХреНрдЯ рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ? рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐ рдХрд╛рдВрдЯреЗ рдпрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕? https://www.npmjs.com/package/react-async ?

@рдирд┐рдХрд╕реНрдЯреАрдлрди

рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИред :-(

  1. рдлреНрд▓рдХреНрд╕ рдпрд╛ рдлреНрд▓рдХреНрд╕ рдЬреИрд╕реЗ рдХрдВрдЯреЗрдирд░ (Alt, Redux, Flummox, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд╕реНрдЯреЛрд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдирд╣реАрдВ рд╣реИрдВред
  2. рдЕрдкрдиреЗ рдорд╛рд░реНрдЧ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдкрд░ fetchData рдЬреИрд╕реЗ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╡рд╛рджреЗ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред
  3. рд╕рд░реНрд╡рд░ рдкрд░, рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВ, рдЙрдирд╕реЗ fetchData рд▓реЗрдВ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдЙрдирдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЗ Flux рдпрд╛ Redux рд╕реНрдЯреЛрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рднрд░ рджреЗрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯреЛрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕рд┐рдВрдЧрд▓рдЯрди рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЕрд▓рдЧ-рдерд▓рдЧ рд░рд╣рддреЗ рд╣реИрдВред
  4. рдЬрдм рд╡рд╛рджреЗ рддреИрдпрд╛рд░ рд╣реЛрдВ, рддреЛ рдЙрд╕ рд╕реНрдЯреЛрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдЕрднреА-рдЕрднреА рднрд░рд╛ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Redux рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ: https://medium.com/@bananaoomarang/handcrafting -an-isomorphic-redux-application-with-love-40ada4468af4

@gaearon рдЕрдЧрд░ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХреА рд╕реВрдЪреА рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдорд╛рдирдиреЗ рдореЗрдВ рд╕рд╣реА рд╣реВрдВ, рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ (рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ/рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдЖрд▓реЗрдЦ) рдкрд░ рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд░реВрдЯ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреЛрд░ рдЖрджрд┐ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рднрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

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

рдореИрдВ рдЬреЛ рдорд╛рдВрдЧ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбреЗрдЯрд╛ рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдЕрдЧрд░ рдореБрдЭреЗ рдЙрдирдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЛ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореИрдВ рд░реВрдЯ рдХреЛ рдЙрд╕ рд╕рдм рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБ?

@NickStefan рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, async рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

import Router from 'react-routing/lib/Router';
import http from './core/http';

const router = new Router(on => {
  on('/products', async () => <ProductList />);
  on('/products/:id', async (state) => {
    const data = await http.get(`/api/products/${state.params.id`);
    return data && <Product {...data} />;
  });
});

await router.dispatch('/products/123', component => React.render(component, document.body));

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдЕрднреА рднреА _controller_-views рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рд╕рдВрднрд╡рдд: рд░рд┐рдПрдХреНрдЯ рдХреА рдиреАрдВрд╡ рдкрд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рд╕рдкрдирд╛ рд╣реИ рдХрд┐ рдПрдХ рджрд┐рди рд╣рдо Wordpress, Drupal рдпрд╛ Modx рдЬреИрд╕реА рдХрд┐рд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрдкреВрд░реНрдг CMS рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди HTML/PHP рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рд╕реЗ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рд░рдЪрдирд╛ рдХрд░реЗрдВрдЧреЗред

@рдирд┐рдХрд╕реНрдЯреАрдлрди

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

рдЕрдЧрд░ рдореБрдЭреЗ рдЙрдирдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЛ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореИрдВ рд░реВрдЯ рдХреЛ рдЙрд╕ рд╕рдм рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБ?

рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕реНрддрд░ рдкрд░ рд░реВрдЯ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред рдЖрдкрдХреЗ рдРрдк рдореЗрдВ рдХрдИ рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдПрдХреНрдЯ рд░рд╛рдЙрдЯрд░ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗрд╕реНрдЯреЗрдб рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдиреЗрд╕реНрдЯреЗрдб рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд░рд╛рдЙрдЯрд░ рдореИрдЪ рдореЗрдВ рдорд┐рд▓рд╛рди рдХрд┐рдП рдЧрдП рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрдЧреА, рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ Promise.all рд╕рдХреЗрдВред рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рднреА рд╣реИ рдХреНрдпрд╛?

рдпрд╣ "рд╣рд░ рдШрдЯрдХ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ" рдХреЗ рд░реВрдк рдореЗрдВ рджрд╛рдиреЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ (рд╢реАрд░реНрд╖ рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд╡рд╛рд▓реЗ) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдиреАрдЪреЗ рд╢реБрджреНрдз рдШрдЯрдХ рд╣реИрдВ рдЬреЛ props рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

"рд╣рд░ рдШрдЯрдХ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрдм рддрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдмреИрдЪрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рди рд╣реЛред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдпрджрд┐ <User> рдпрд╣ рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдПрдХ API рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдм рдЖрдк 100 <User> s рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВтАФрдХреНрдпрд╛ рдЖрдк 100 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рдмреИрдЪрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рд╣реЛред рдЕрдЧрд░ рд╡рд╣ рдЖрдкрдХреЛ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд░рд┐рд▓реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмреИрдХрдПрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

@NickStefan рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рддрд┐-рдШрдЯрдХ async рд▓рд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрд╣ рдореБрджреНрджрд╛ рд╣рдорд╛рд░реА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рдкрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрдбрд╝реЗ рдкреБрдирд░реНрдЧрдарди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред

@gaearon

"рд╣рд░ рдШрдЯрдХ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрдм рддрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдмреИрдЪрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рди рд╣реЛред

рдЗрд╕ рдкрд░ рдХреБрдЫ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдЬреЛ рдореИрдВ рдЪрд╛рд╣ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЖрдкрдХрд╛ 100 . рднреАрдЙрджрд╛рд╣рд░рдг рдЯреАрдо рдЕрдиреБрд╢рд╛рд╕рди рдХреЗ рд╕рд╛рде рдареАрдХ рд░рд╣реЗрдЧрд╛ (рдпрд╛рдиреА рдХреЗрд╡рд▓ <UsersContainer> рдмрдирд╛рдПрдВ рдЬреЛ рд╕рднреА 100 рдХреЗ рд▓рд┐рдП 1 рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕рдореНрдореЗрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд▓реЛрдЧ-рд╕реНрдХреЗрд▓реЗрдмрд▓" рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рд░реВрдЯ рдпрд╛ рд░рд╛рдЙрдЯрд░ рдкрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░рд┐рд▓реЗ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░реЛрдВ (RelayContainer, RelayRootContainer, RelayRouter рдЖрджрд┐) рдХреЗ рд╕рд╛рде рд░реВрдЯ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреЗрдбрд╝ рдкрд░ рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ "рд▓рд╣рд░рд╛рдиреЗ" рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред

рдирдорд╕реНрддреЗ!
рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?

+1

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдПрд╕рд┐рдВрдХреНрд╕ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рдЕрдиреНрдпрдерд╛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рд╣реИред

рд░рд┐рд▓реЗ рдореЗрдВ рднреА, рдЖрдкрдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд░реВрдЯ рдХрдВрдЯреЗрдирд░ рдШреЛрд╖рдгрд╛рдУрдВ, рд░рд┐рд▓реЗ рдХрдВрдЯреЗрдирд░ рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рдкрд░ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ "рд▓рд╣рд░рд╛рдирд╛" рдкрдбрд╝рддрд╛ рд╣реИред рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдкрд╛рджрди рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред

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

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

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрдЫреЗ рдХреА рдУрд░ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИред рдХрднреА-рдХрднреА, рдШрдЯрдХ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдЯреНрд░реА рд╡реНрдпреВ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдиреЛрдбреНрд╕ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдЧреНрд░рд╛рдл рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдХреЗрд╡рд▓ рдШрдЯрдХ рд╣реА рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред

рднрд▓реЗ рд╣реА, рдпрд╣ рдЪрд░реНрдЪрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рд╣рдо рдПрдХ рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (#3092) рдХреЗ рднреАрддрд░ рд░рд┐рдПрдХреНрдЯ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреБрд▓ рдХреЗ рдкрд╛рд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП async рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

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

рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рдирд╣реАрдВ рдкрдврд╝рд╛ рддреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ рд╣реА рдЪрд░реНрдЪрд╛ рд╣реЛ рдЪреБрдХреА рд╣реИред

рдПрдХ рдЪреАрдЬ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА рдпрджрд┐ рдХреЛрдИ react-dom/server рд╡рд┐рдзрд┐ рдереА рдЬреЛ рдПрдХ рдШрдЯрдХ рдФрд░ рдЕрдЧреНрдирд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ "рдкреНрд░рд╛рд░рдВрдн/рддрддреНрдХрд╛рд▓" рдХрд░реЗрдЧреА рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рджреЗрдВ рдХрд┐ рд╡рд╣ рдШрдЯрдХ рдХреЛ HTML рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ . рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП setTimeout рдпрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ "рд╣реИрдХ" рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдордп redux рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

  // start/instantiate component
  // fires componentWillMount methods which fetch async data
  ReactDOM.renderToString(rootEle)

  // all my async methods increment a `wait` counter 
  // and decrement it when they resolve
  const unsubscribe = store.subscribe(() => {
    const state = store.getState()
    // as a result, when there are no more pending promises, the wait counter is 0
    if (state.wait === 0) {
      unsubscribe()
      // all the data is now in our redux store
      // so we can render the element synchronously
      const html = ReactDOM.renderToString(rootEle)
      res.send(html)
    }
  })

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ ReactDOM.renderToString рд╕рднреА componentWillMount рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рд╣реЗ рд▓реЛрдЧреЛрдВ! рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдЕрднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдорд╣рддреНрд╡ рдореЗрдВ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реЗрдбрдХреНрд╕ рдХреЗ connect рдХреЛ dataConnect рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдХрдВрдЯреЗрдирд░ рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рдЗрди рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рдЕрдиреБрд░реЛрдз рдореЗрдВ GraphQL рдХреЗ рд╕рд╛рде рдкреВрдЫрддрд╛рдЫ рдХреА рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдВрд╕ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдкреЛрдЬрд╝реЗрдмрд┐рд▓рд┐рдЯреА рдФрд░ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдлрд╝реЗрдЪрд┐рдВрдЧ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред (рд░рд┐рд▓реЗ рдкрд░ рджреЗрдЦреА рдЧрдИ рд╕рднреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ)

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

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рдкреЗрдбрд╝ рдкрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдЕрджреНрдпрддрдиреЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдорд╛рдВрдЧ рдкрд░ рдбреАрдУрдПрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:

const virtualTree = ReactDOM.renderVirtual(rootEle);

// get the bundled query from redux store for example
const bundle = store.getState().bundle;

// Fetch the data according to the bundle
const data = fetchDataSomehow(bundle);

// hydrate store
store.dispatch({type: 'hydrate', data});
// components that should update should be marked on the virtual tree as 'dirty'

virtualTree.update(); // this would only update the components that needed update

const domString = virtualTree.renderToString(); // final result

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

рддреБрдо рд▓реЛрдЧ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ? рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ?

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

рддрдм рд╕реЗ, рдореИрдВрдиреЗ REST/HATEOS рдХреЗ рдкреАрдЫреЗ рдХреЗ рдЖрджрд░реНрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╕рдореНрдорд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рд╛рджрдЧреА рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА (рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдХреНрд░реЙрд▓рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░, рдкреНрд░реЙрдХреНрд╕реА, рд╕реАрдбреАрдПрди, рдЖрджрд┐) рдореЗрдВ рдЙрднрд░рддреА рд╣реИ, рдЬрдм рдЗрд╕рдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реЛрддреЗ рд╣реИрдВред рдкреАрдЫрд╛ рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, _рдпреВрдЖрд░рдПрд▓ рдЖрд╡реЗрджрди рд░рд╛рдЬреНрдп рдХрд╛ рдПрдХ рд╕рд╣реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣, рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕реЗ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡реНрдпреВ рд▓реЗрдпрд░, рд░рд┐рдПрдХреНрдЯ, рдЗрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ URL рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ ред

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

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

рдЙрд╕ рд╕рд╛рд░реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛?

  • рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдпреВрдЖрд░рдПрд▓ рд╕рд╛рдЭрд╛ рдХрд░рдХреЗ рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣реИред
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдорд╛рдирдХ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕рдХреЗ рддрддреНрд╡ рдореЗрдВ рд╣реИред
  • рдЬрдЯрд┐рд▓ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ next рд▓рд┐рдВрдХред рдПрдлрдмреА рдЧреНрд░рд╛рдл рдПрдкреАрдЖрдИ рдЗрд╕рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░реАрди рдЙрджрд╛рд╣рд░рдг рд╣реИред
  • Google Analytics рдореЗрдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рдЧреНрд░рд╛рдлрд╝ред
  • рдЙрдХреНрдд рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд▓реЙрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
  • рдЕрд░рд╛рдЬрдХрддрд╛ рдХреЗ рд╕реНрдЯрд╛рд░-рд░реВрдЯ рд╕реЗ рдмрдЪрдирд╛: рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ app.get("*", theOneTrueClientonaserverEntryPoint) рд░реВрдк рдореЗрдВ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред рдЖрдк 200 OK\n\n{status: "error"} рдмрдЬрд╛рдп рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рд╕рд╣реА HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрд╛рд░рд╛ рдорд╛рд░реНрдЧ рдореЛрд╣рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╛рдЧрд▓рдкрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рддреЛ, рдЕрдм рдЬрдмрдХрд┐ рд░рд┐рдПрдХреНрдЯ, рд╣рдорд╛рд░рд╛ рд╕реНрдЯрд╛рд░ рдЯреВрд▓, рдСрдкрд░реЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рд╣рдо рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ?

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

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

рдпрд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╣рд╛рди рдмрдирд╛рддрд╛ рд╣реИ: рдпрд╣ рджреГрд╢реНрдп рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреГрд╢реНрдпред рдХреЗрд╡рд▓ рджреГрд╢реНрдпред рдореИрдВ

рдЖрдкрд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдирд╛ рдкрдбрд╝реЗрдЧрд╛ @d4goxnред рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рджреГрд╢реНрдп рдкрд░рдд рд╕реЗ рдЕрдзрд┐рдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд░реВрдЯрд┐рдВрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдШрдЯрдХ/рдХрдВрдЯреЗрдирд░ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рджреГрд╢реНрдп рдкрд░рдд рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдЖрдкрдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдЕрд▓рдЧрд╛рд╡ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд░рд▓реАрдХрд░рдг рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ рдПрдХ рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдореЗрд░реЗ рдРрдк рдореЗрдВ 30 рдорд╛рд░реНрдЧ рд╣реИрдВ рдФрд░ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдШрдЯрдХ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдорд╛рд░реНрдЧ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрд╕ рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 30 рдорд╛рд░реНрдЧреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рд╕рд╛рде рдпрджрд┐ рдЖрдк рдЙрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдкрдиреА рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд╕ рд╡рд╣ рдШрдЯрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд▓рдЧ рдПрдВрдб рдкреНрд▓реЗ рд╣реИред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд╕рднреА рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдбреЗрдЯрд╛ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд┐рд▓реЗ рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдЗрд╕реЗ рдореБрдЭрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛рддреА рд╣реИред

рдореИрдВ рдкреБрд░рд╛рдиреЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдирдП рдорд╛рдирдХреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддрд╛ рд╣реВрдВред

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

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

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

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

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рднреАрддрд░ рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреА рд╡рд╕реНрддреБ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдмрд╣реБрдд рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреА рд╣реИред рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдлрд░реНрд╕реНрдЯ рдкрд░реНрд╕рди рд╢реВрдЯрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдмрд╣реБрдд рдХреБрдЫ рддреЗрдЬреА рд╕реЗ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЧреЗрдо рд╣реЛрд╕реНрдЯ/рд╕рд░реНрд╡рд░ рддрдХ рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдХрд┐рддрдирд╛ рдЫреЛрдЯрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рд╕рднреА рдЗрдирдкреБрдЯ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдирдХреНрд╢рд╛; рдПрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк + рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рд░реЗрдВрдЬ, рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП ~ 110 рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб, рдФрд░ рдорд╛рдЙрд╕ / рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдФрд░ рд╡реАрдЖрд░ рд╣реЗрдбрд╕реЗрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд░реНрдЬрди рдмрд╛рдЗрдЯреНрд╕ред рдЧреНрд░рд╛рд╣рдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛, рдЖрд╢рд╛рд╡рд╛рджреА рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рднреМрддрд┐рдХ-рдЖрдИрдПрдирдЬреА, рдФрд░ рд╕рд░реНрд╡рд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЫреЛрдЯреЗ рд░рд╛рдЬреНрдп рдФрд░ рд░рд╛рдЬреНрдп рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдФрд░ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕рд╣реА рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ ( рдЖрд╕-рдкрд╛рд╕ рдХреЗ рд╕рднреА рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░, рд╕рдВрдкрддреНрддрд┐ рдзрдХреНрдХрд╛), рд▓реЗрдХрд┐рди, рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╡рд╣ рдзрд╛рд░рд╛ рдЕрднреА рднреА рдЖрд░рд╛рдо рд╕реЗ 2KB рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред рдФрд░ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд░рджрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

:рдмрд┐рдпрд░:

PS рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рдерд╛ рдХрд┐ HTTP рдПрдХ MMOFPS рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реЛрдЧрд╛

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

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдпрд╣ рд╕реНрддрд░ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рд░рд┐рд▓реИрдХреНрд╕ рд╕реАрдПрдордПрд╕ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдФрд░ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдПрдХ рдЖрдирдВрдж рд╣реИред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рди рд╣реА рдХрдо рд╣реИ рдЬреЛ рдпреВрдЖрдИ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░рдХреЗ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ Relate http://relax.github.io/relate/how-it-works.html рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдмреНрд▓реЙрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкреНрд░рддрд┐рдкрд╛рджрди рдЕрднреА рднреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рддреЛ рдореИрдВ рд╕рдорд╛рдзрд╛рди рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рдХрд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реИред

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

рдореЗрд░реЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП ред

рдЖрдк рдЬрд┐рд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рд╡рд╣ рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдПрдорд╡реАрд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реА рд▓рдЧрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдорд╡реАрд╕реА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ)ред рд╡рд░реНрддрдорд╛рди рдпреВрдЖрд░рдПрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ_ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреГрд╢реНрдп рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдЬрдм рдЖрдк рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╡реЗрдм рдкреЗрдЬ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдШрдЯрдХреЛрдВ рдХреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИ (рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдШрдЯрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ)ред рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ URL рд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рдирд╛ рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛! рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдбреАрдХреЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЖрдкрдХреЛ рджреГрд╢реНрдп рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдбреАрдХреЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдареАрдХ рд╣реИ ... рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд _DRY_ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

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

рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░ рднреА рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рд╢реБрд░реВ рд╕реЗ рд╣реА _controller-views_ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдореИрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ _controller_ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ _view_ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рджреГрд╢реНрдпреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрдкреВрд░реНрдг рдкреГрд╖реНрда рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдмрдирд╛ рд╣реИред рд╡реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред

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

  • рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рд╣реИ ред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдпреВрдЖрд░рдПрд▓ рдкрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рд╣реБрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред рд╡реЗ _controller_ рдШрдЯрдХ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЬреЛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ react-router рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрдиред рдпрд╣ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ _рдбреЗрдЯрд╛-рдкрджрд╛рдиреБрдХреНрд░рдо_ рдФрд░ _рджреГрд╢реНрдп/рдШрдЯрдХ рдкрджрд╛рдиреБрдХреНрд░рдо_ рджреЛрдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рднреА рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд _React-like_ рд▓рдЧрддрд╛ рд╣реИред
  • рдкреВрд░реЗ рд░рд╛рдЬреНрдп (рдбреЗрдЯрд╛) рдХреЛ redux рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрдирд╛ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ connect() рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рдЬреЛ рдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд░реНрддрдорд╛рди рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рдЧрд▓ рд╣реЛрдЧрд╛)ред
  • рдкрд╣реЗрд▓реА рдХрд╛ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝рд╛ рдкреБрдирд░реНрдЪрдпрди рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ decoupling рдХрд╛рд░рдХ рдХреЛ рднреА рдмрд╣реБрдд рдмрдврд╝рд╛рддрд╛ рд╣реИред

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

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

рдЕрднреА, рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдЗрд╕реЛрдореЛрдлрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЖрдИрдПрдордУ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдврд╝рддреЗ рдорд╣рддреНрд╡ рдХреЛ рджреВрд╕рд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рдЗрд╕ рдмреАрдЪ рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред

@decodeman рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреНрд░реИрд╡рд░реНрд╕ рдХрд┐рдпрд╛ рд╣реИ https://github.com/relax/relate/blob/master/lib/server/get-data -рдирд┐рд░реНрднрд░рддрд╛.рдЬреЗ.рдПрд╕. рдЗрд╕ рддрд░рд╣ рдореИрдВ рд╕рднреА рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ -> рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ -> рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред

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

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

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

рдЗрд╕реЗ рдЗрд╕рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдЯреНрд░реАрдо рдЪреЗрдХ рдЖрдЙрдЯ рд░рд┐рдПрдХреНрдЯ рд╕реНрдЯреНрд░реАрдо рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЧреБрд░реБрд╡рд╛рд░, рдирд╡рдВрдмрд░ 3, 2016 рдХреЛ, рдлреНрд▓реЛрд░рд┐рдпрди рдХреНрд░рд╛рдЙрдерди рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╣реИрдХреА рддрд░реАрдХреЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рджреЗрдЧрд╛
рдЗрд╕ рд╕рдордп рдЙрдЪрд┐рдд рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рд╕рд╣рд┐рдд
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ v4 рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЖрд╕рд╛рди рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкреНрд░рддрд┐рдкрд╛рджрди
(рдЬреЛ рдЕрдм рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдорд╛рд░реНрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рд╣реИ
рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛)

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react/issues/1739#issuecomment -258198533,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ATnWLUIEJw4m1Y3A4oGDOBzP6_ajDcqIks5q6g4_gaJpZM4CHAWq
.

@ yamat124 рдЕрдЧрд░ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ: https://github.com/aickin/react-dom-stream

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

https://github.com/makeomatic/redux-connect рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛

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

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

Next.js рдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП async getInitialProps рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрднреА рднреА рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЗ getInitialProps рдХреЛ рд╡рд╛рдкрд╕ рд░реВрдЯ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдкреЛрд▓реЛ рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреЗрдбрд╝реЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрддрд╛ рд╣реИред рдиреЗрдХреНрд╕реНрдЯ + рдЕрдкреЛрд▓реЛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг: https://github.com/sedubois/realateред

рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП async рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рд╕реАрдЦрд╛, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ ЁЯШД

/рд╕реАрд╕реА @nkzawa @stubailo

BTW componentWill/DidMount рдкрд╣рд▓реЗ рд╕реЗ рд╣реА async рд╣реИрдВ, рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ?

https://twitter.com/Vjeux/status/772202716479139840

@sedubois рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд╛рджреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ? рдЕрдиреНрдпрдерд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ!

@olalonde рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ: https://github.com/sedubois/react-async-poc/blob/1d41b6f77e789c4e0e9623ba1c54f5ed8d6b9912/src/App.js

const getMessage = async () => new Promise((resolve) => {
  setTimeout(() => {
    resolve('Got async message!');
  }, 3000);
});
class App extends Component {
  state = {
    message: 'Loading...',
  };
  async componentWillMount() {
    this.setState({ message: await getMessage() });
  }
  render() {
    return (... {this.state.message} ...);
  }
}
loadinggot

@sedubois рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, componentWillMount

  async componentWillMount() {
    this.setState({ message: await getMessage() });
  }

undefined рдФрд░ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╡рд╛рджреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ (рдпрд╣ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛) , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ Loading... рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред

@sedubois @polytypic рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░ рдлреЗрдВрдХреА рдЧрдИ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рджрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред

@polytypic @dantman рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ "рд╡рд╛рджреЗ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЧрдпрд╛" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред рдпрд╣ await рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╣реИред рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ (рдЕрдкреЛрд▓реЛ рдХреЗ рд╕рдорд╛рди рд▓реЛрдбрд┐рдВрдЧ/рддреНрд░реБрдЯрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

    try {
      this.setState({ message: await getMessage() });
    } catch(error) {
      this.setState({ error });
    }

рдФрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛:

{error ? error : loading ? 'Loading...' : message}
screen shot 2016-11-07 at 13 25 46

@sedubois рдЬрдм рдЖрдк async рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ рднреА throw рд╕реНрдЯреИрдХ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ componentWillMount рдЕрдм рдЕрдкрдиреЗ рдХреЙрд▓рд░ рдХреЛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред

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

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

рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ..рдХреИрдЪ рдХрд░рдиреЗ рд╕реЗ рднреА рдЖрдк рдЗрд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдпрджрд┐ setState рдЖрдкрдХреЗ рдХреИрдЪ рд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдпрд╛ рдЖрдк рдХреИрдЪ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдЪреБрдкрдЪрд╛рдк рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред

@sedubois рджрд░рдЕрд╕рд▓, рдПрдХ

рдлрд┐рд░ рднреА, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╡рд╛рджреЗ рдХреЗ рд╣рд▓ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ render рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж componentWillMount рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ Loading... рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдпрд╣ render рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ setState рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд░рд┐рдПрдХреНрдЯ рдиреЗ рд╡рд╛рджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рддреЛ рдпрд╣ Loading... рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡рд╛рджрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдХреЙрд▓ рдХрд░реЗрдЧрд╛ render , рдЬреЛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ: рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди async IO рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред

@dantman @polytypic рдзрдиреНрдпрд╡рд╛рдж рд╣рд╛рдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ await рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рдЬреЛрдбрд╝рдХрд░ рдпрд╣ рдХрд░ рд╕рдХреЗ

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

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

@sedubois рдЗрд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдвреЗрд░ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛; рдпрд╛ рдПрдХ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрдиред рд░рд┐рдПрдХреНрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд┐рдВрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдПред

@dantman рдореИрдВ рдпрд╣рд╛рдВ рдХреЛрдИ рд░рд╛рдп рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдкрд╛рдиреА рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣реИ (рдореЗрд░рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗрд╡рд▓ Vjeux рдХреЗ async рдШрдЯрдХ WillMount рд╣реИрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдерд╛ ...), рд▓реЗрдХрд┐рди рд╣рдореНрдо, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдЬреАрд╡рди рдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдФрд░ рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ рдФрд░ рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рд╕рд┐рдВрдХ рдХрд░реЗрдВ (рдЬреИрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╛рдиреА рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ)?

рдореБрдЭреЗ рд╡рд╣ рдкрд╕рдВрдж рд╣реИ рдЬреЛ @fkrautan рдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдПрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐ load рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рдпрд╛ undefined рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд async renderToStringAsync рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ load рд╣рдореЗрд╢рд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо render рдпрд╛ renderToString рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд▓реМрдЯрд╛рдП рдЧрдП рд╡рд╛рджреЗ рдХреЛ рдЖрдЬ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо renderToStringAsync рдФрд░ load рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╛рджреЗ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

Next.js рдХреЛ рдкрд╕рдВрдж рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ, рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ async getInitialProps рдЬреАрд╡рдирдЪрдХреНрд░ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реАрдзреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред

const props = await (Component.getInitialProps ? Component.getInitialProps(ctx) : {});
...
const app = createElement(App, {
  Component,
  props,
  ...
});

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Next.js рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдХрд╛ getInitialProps рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШрдЯрдХ рдкрд░ рд╣реА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдФрд░ рдмрд╕ рдПрдХ рд╕рд╛рде рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

@sedubois рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ getInitialProps рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рд▓реЛрдЧ ES6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░рд╛, рдЖрдк рдЗрдирд┐рдЯрд▓рдкреНрд░реЙрдкреНрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐ рд╕рд┐рд░реНрдл рдбрд┐рдлреЙрд▓реНрдЯ рд╣реИрдВ) рдЖрдк рдЗрдирд┐рдЯрд▓рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд░реНрдЬ рдХреЗ рдКрдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ + рдкреНрд░реЙрдкреНрд╕ рдореЗрдВ рдкрд╛рд╕ред рдЗрд╕рд▓рд┐рдП рдПрдХ рдирдИ рдЬреАрд╡рдирдЪрдХреНрд░ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдЬреЛ componentWillMount рд╕реЗ рдкрд╣рд▓реЗ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред

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

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

рдЬреЛ рд▓реЛрдЧ ES6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ

@fkrauthan рд╢рд╛рдпрдж рдЖрдк getInitialState рд╕рдВрджрд░реНрдн рд▓реЗрдВ? рдпрд╣рд╛рдВ рдореИрдВ рдПрдХ рдирдП рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛, getInitialProps (рдирд╛рдо рдиреЗрдХреНрд╕реНрдЯ.рдЬреЗрдПрд╕ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред

рдЖрдкрдХреЗ рджреВрд╕рд░реЗ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП, рд╣рд╛рдБ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирдИ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐ componentWillMount рд╕реЗ рдкрд╣рд▓реЗ рдХреА рдмрдЬрд╛рдп constructor рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд░рд┐рдПрдХреНрдЯ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рднреАрддрд░ рд▓рд╛рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@sedubois рд╡рд╣ рднреАред рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП es7 рдлреАрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ static props = {}; рдЕрдкрдиреЗ рдХреНрд▓рд╛рд╕ рдмреЙрдбреА рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рд╣реА es7 рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рд╣реЛрдЧрд╛, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЙрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдиреЛрдЯ: рд╡рд░реНрдЧ рдЧреБрдг рдПрдХ "ES7" рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ ES7 рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдирдИ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдШрд╛рддрд╛рдВрдХ рдСрдкрд░реЗрдЯрд░ рд╣реИред рдЖрдк рдЬреЛ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЪрд░рдг 2 рд╡рд░реНрдЧ рдЧреБрдг рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ ред рдпрд╣ рдЕрднреА рддрдХ рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЧрд┐рд░рд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рдирд┐рдореНрди рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛ (рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдЙрд╕рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде):

const virtualTree = ReactDOM.renderVirtual(rootEle);

// get the bundled query from redux store for example
const bundle = store.getState().bundle;

// Fetch the data according to the bundle
const data = await fetchDataSomehow(bundle);

// hydrate store (this will set updates on the virtual tree)
store.dispatch({type: 'hydrate', data});

// final result
const domString = virtualTree.renderToString();

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

@ bruno12mota рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд

@fkrauthan рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рд╡рд░реНрдЪреБрдЕрд▓ renderToString рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ (рдпрд╣рд╛рдВ рдЖрд▓реЛрдЪрдирд╛ рдирд╣реАрдВ, рд╡реЗ рдПрдХ рдЕрджреНрднреБрдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред

рдореИрдВ @bruno12mota рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рд╕рдордп рд╕реЗ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рд░реЗрдВрдбрд░ рдХрдм "рдлреНрд▓рд╢" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред

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

рдореИрдВ @bruno12mota рдХреЗ

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреЛрдо/рд╕рд░реНрд╡рд░ рдореЗрдВ "renderToStringAsync" рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдВрдбрд░рдЯреЙрд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдВрддрд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

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

рддреЛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдРрдк рд╕рдВрд░рдЪрдирд╛ рд╣реИ:

    ComponentB
    ComponentC
        ComponentD
        ComponentE

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреА:

1) instanciate componentA
2) await componentA.initialize();
3) componentA.render()
4) do in parallel(
    instanciate componentB, await componentB.initialize(), componentB.render()
    instanciate componentC, await componentC.initialize(), componentC.render(), do in parallel(
        instanciate componentD, await componentD.initialize(), componentD.render()
        instanciate componentE, await componentE.initialize(), componentE.render()
    )
)
5) render to string

рддреЛ, рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдмрд╕ рдПрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди "renderToStringAsync" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирдП, рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди "рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@VanCoding рдХрд╛ рд╡рд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдХреБрдЫ рд╕рдордп рд╕реЗ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдбрдорд╛рдЙрдВрдЯ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╣ рд╣реЛрдЧрд╛:

initialize()
render()

рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдкрд░ рдпрд╣ рд╣реЛрдЧрд╛:

render() // without data (unless available synchronously)
componentDidMount()
initialize()
render() // with data

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ v4 рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЕрдкреЛрд▓реЛ рдЧреНрд░рд╛рдлрд╝рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╣реИред

рдпрд╣ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб-рд░реЗрдВрдбрд░рд┐рдВрдЧ-рдХреЛрдб-рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ-рдПрдВрдб-рд╣реЙрдЯ-рд░реАрд▓реЛрдбрд┐рдВрдЧ-рд╡рд┐рдж-рд░рд┐рдПрдХреНрд╢рди-рд░рд╛рдЙрдЯрд░ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред

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

рд╡реИрд╕реЗ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдиреИрд╢реЙрд░реНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди (JVM) рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб
https://github.com/shendepu/react-ssr-starter-kit/blob/apollo/src/main.js#L63 -L82

рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛрдб
https://github.com/shendepu/react-ssr-starter-kit/blob/apollo/src/main.js#L128 -L155

рдорд╛рд░реНрдЧ рдореЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рди рд╣реИред
рдорд╛рд░реНрдЧ рдореЗрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдд рдШрдЯрдХ
https://github.com/shendepu/react-ssr-starter-kit/blob/apollo/src/routes/Counter/Route.js#L10

RouteAsync рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдХ
https://github.com/shendepu/react-ssr-starter-kit/blob/apollo/src/routes/Counter/RouteAsync.js#L7 -L23

рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд░реВрдЯ.рдЬреЗрдПрд╕ рдпрд╛ рд░реВрдЯрдПрд╕рд┐рдВрдХ.рдЬреЗрдПрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдб рдХреЛ рд╣рдореЗрд╢рд╛ RouteAsync.js рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗрдмрдкреИрдХ рдЗрд╕реЗ рд░реВрдЯ.рдЬреЗрдПрд╕ рд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
https://github.com/shendepu/react-ssr-starter-kit/blob/apollo/build/webpack.config.js#L72 -L80

рддреЛ рдмрд┐рд▓реНрдб dist рдФрд░ dist_ssr рджреЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдВрдЧреЗ, dist рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрдмрдХрд┐ dist_ssr рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рднрд╛рдЧ рд╣реИрдВ: рд╡рд┐рдХреНрд░реЗрддрд╛ рдФрд░ рдРрдк . рд╕реНрдЯреЛрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ index.html рдХреЗ <script> рдореЗрдВ __INITIAL_STATE__ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдФрд░ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд┐рд▓реНрдб рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг ReactDomServer.renderToString() рд╣реИ рдЬреЛ рдЕрднреА рддрдХ async рдШрдЯрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рджреЛ-рд╕рдВрд╕реНрдХрд░рдг-рдирд┐рд░реНрдорд╛рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рджреЗрд╡ рдореЛрдб рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ:
React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:

рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓ рдЕрдВрддрд░ рд░реВрдЯ.рдЬреЗрдПрд╕ рдФрд░ рд░реВрдЯрдПрд╕рд┐рдВрдХ.рдЬреЗрдПрд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрд╛рджрди рдореЛрдб рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред

рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдПрд╕рд┐рдВрдХреНрд╕ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

  • рдмрд╛рдХреА рдПрдкреАрдЖрдИ: рдШрдЯрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕реНрдерд┐рд░ рд▓реЛрдбрдбреЗрдЯрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
const { matchedRoutes, params } = matchRoutesToLocation(rootRoute.routes, 
                                                        location, [], {}, rootRoute.pattern)
matchedRoutes.filter(route => route.component.loadData).map(route =>
              route.component.loadData(store, params))

рдЬрд╛рдВрдЪ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП loadData ред рдорд┐рд▓рд╛рди рдорд╛рд░реНрдЧ рдорд┐рд▓рд╛рди рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдЧреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЗрдВрдбреЗрдХреНрд╕ 0 ред loadData рдХреНрд░рдо рдореЗрдВ рдпрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • GraphQL рдХреНрд╡реЗрд░реА: рд╕рднреА GraphQL рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ getDataFromTree рд╕реЗ react-apollo/server рдХрд░реЗрдВред

BTW: рдиреИрд╢реЙрд░реНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИ: рдЪреВрдВрдХрд┐ рд╡рд┐рдХреНрд░реЗрддрд╛ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдФрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╛рдж рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдРрдк рдЪрдВрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡реЗрдВрдбрд░ рдЪрдВрдХ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдРрдк рдореЗрдВ src рдореЗрдВ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣рд░ рдмрд╛рд░ рд╡реЗрдВрдбрд░ рдЪрдВрдХ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИред (рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред)

рдореИрдВрдиреЗ рдЭреВрда рдмреЛрд▓рд╛ рдерд╛ рдХрд┐ рдРрдк рдЪрдВрдХ рдореЗрдВ рдХреЗрд╡рд▓ src рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ babel-runtime рдФрд░ рджреЛрд╣рд░рд╛рдпрд╛ core-js/library рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд babel-runtime ред babel-runtime рдХреЛ рд╡реЗрдВрдбрд░ рдЪрдВрдХ рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ index.js рдпрд╛ рдореБрдЦреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реИ рддрд╛рдХрд┐ рд╡реЗрдмрдкреИрдХ рдЗрд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рди рди рд╕рдХреЗред рд▓реЗрдХрд┐рди рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рд╣реИред

рдЖрдЗрдП рдЖрдЧреЗ @VanCoding рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╡рд┐рд╕реНрддреГрдд рдХрд░реЗрдВ :

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИ - рдирд╛рдо рдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдпрд╛ рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддрд╛ - рдЙрд░реНрдл тАЛтАЛрдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдирд╣реАрдВред рдЙрдкрд╛рдп: getStaticProps , getServerProps , getInitialProps , getAsyncProps ...

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрд░ рдЯреАрдо рд╕реЗ рдпрд╣ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдРрд╕реА рд░реЗрдВрдбрд░рдЯреЙрд╕реНрдЯреНрд░рд┐рдВрдЧрдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддрдХрдиреАрдХреА рдпрд╛ рдЕрдиреНрдпрдерд╛ рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВред

@nmaro рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдРрд╕рд╛ рдирд╛рдо рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ "рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ" рд╕реЗ рд╢реБрд░реВ рди рд╣реЛ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдХреИрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 40 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг рдХрд┐рдпрд╛

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рдЕрднреА рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ in
renderToString(Component, {async: true})

@nmaro рдЬреЛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рджреЗрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рдорд╛рдирддрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@VanCoding рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ lib

@ рд╡реИрдирдХреЛрдбрд┐рдВрдЧ рдХреВрд▓! рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдЗрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред https://github.com/facebook/react/blob/master/src/renderers/dom/stack/server/ReactServerRendering.js рджреЗрдЦреЗрдВ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдЗрдВрдЯрд░реНрдирд▓ рдореЗрдВ рдЦреЛ

@sedubois рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдВрдбрд░рдЯреЙрд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдРрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

var react = require("react");
var renderAsync = require("react-render-async");
var MyComponent = require("./MyComponent");

renderAsync(react.createElement(MyComponent,{some:"props"}).then(function(html){
    console.log(html);
});

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

@nmaro рддреБрдо рд╕рд╣реА рд╣реЛред рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ?

@firasdib рд╣рдо рдЕрднреА рднреА рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

+1

Google рдЕрдиреБрдХреНрд░рдордг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП SSR рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╕рд╛рдорд╛рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рджреЗрд╡реЛрдВ рдиреЗ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд╕рдВрджреЗрд╣ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╕рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рддрд░реНрдХ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХреЛрдВ рдХреЛ рд╢реБрджреНрдз рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИред рд╡реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд░реЗрдВрдбрд░ рдЯреНрд░реА рд╣реЛрдиреЗ рддрдХ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдореВрд▓ рдпрд╣ рд╣реИ рдХрд┐ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдпрд╣ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ DOMTree рдореЗрдВ рдХреМрди рд╕реЗ рдШрдЯрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЗрддрдирд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред

IMO рдХрд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рднреА рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╡рд╛рджреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рд╕рднреА рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╡рд╛рджреЗ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрдВ рд░реЗрдВрдбрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдмреБрд▓рд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрдИ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВ:

  • рдбреЛрдордЯреНрд░реА рдХрдИ рдмрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рд▓рд╛рдЗрд╡ рд╕рд┐рд╕реНрдЯрдо рдХреА рддрд░рд╣ рд╣реИ рдЬреЛ рдЕрд╕реНрдерд┐рд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕реНрдерд┐рд░ "рд▓реЛрдб" рд╕реНрдерд┐рддрд┐ рдореЗрдВ "рд╡реНрдпрд╡рд╕реНрдерд┐рдд" рд╣реЛрддрд╛ рд╣реИред
  • рдПрдХ рдЬреЛрдЦрд┐рдо рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдмрдЧреНрдЧреА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд┐рд░ "рд▓реЛрдбреЗрдб" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛ред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдо рдЖрдЙрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдирд╛ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ "рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЧрд╣рди" рдЙрдкрдпреЛрдЧ рд╣реИ рдЬреЛ рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╣реИ рдЬреЛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдЕрднреА рднреА рдПрдХ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕рдордЭреМрддрд╛ рдХрд░реЗрдЧрд╛ :)

рдПрдХ рдмреАрдЪ рдореЗрдВ рд╣рдореЗрдВ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рдПрд╕рд┐рдВрдХ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

  1. рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдЕрдиреБрд░реЛрдз URL рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ)ред рд╕рднреА рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╡рд╛рджреЛрдВ рдХреЛ рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВред
  2. Promise.all() рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╡рд╛рджрд╛ рд╣реИред рдЬрдм рдпрд╣ рд╡рд╛рджрд╛ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред

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

рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдКрдкрд░ # 1 рдЖрдЗрдЯрдо рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рднреА рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред рд╕реНрд╡рддрдВрддреНрд░ "рдореЙрдбреНрдпреВрд▓" рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдореВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреА рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рддрд░реНрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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

рдЖрдЗрдЯрдо # 1 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдореЗрдВ рдЙрд╕ рдорд╛рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЙрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

app.use(function(req, res, next) {
    match({ routes, location: req.url }, (error, redirectLocation, renderProps: any) => {
    if (error) {
        res.status(500).send(error.message)
    } else if (redirectLocation) {
        res.redirect(302, redirectLocation.pathname + redirectLocation.search)
    } else if (renderProps) {
        // You can also check renderProps.components or renderProps.routes for
        // your "not found" component or route respectively, and send a 404 as
        // below, if you're using a catch-all route.
        console.log("renderProps", renderProps)
        for (let eachComp of renderProps.components) {
            // create an instance of component
            // ask component to load its data
            // store data loading promise in a collection
            console.log("eachComp: ", eachComp)
        }
        res.status(200).send(renderToString(<RouterContext {...renderProps} />))
        } else {
        res.status(404).send('Not found')
        }
    })
});

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

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

рдореИрдВ рдпрд╣реА рджреЗрдЦрддрд╛ рд╣реВрдВред

рдЕрдЧрд░ рдореБрдЭреЗ рдЗрди SSR рдирд┐рд╣рд┐рддрд╛рд░реНрдереЛрдВ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ, рддреЛ рдореИрдВрдиреЗ Google рдЕрдиреБрдХреНрд░рдордг рдпреЛрдЧреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП React рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдмрд╛рд░ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдлреНрд▓рдХреНрд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдлреНрд▓рдХреНрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреВрд░реЗ рд╕реНрддрд░ рдкрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрддрд╛ рд╣реИред рдореИрдВ рд╡рд╣рд╛рдБ рдЧрдпрд╛ рдерд╛ред рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рддрд░реНрдХ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕реНрддрд░ рдкрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рдерд╛ред рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реБрдИред Redux рдХреЛ рдХреЛрдб рдмреЗрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рд╕рднреА UI рдбрд┐рдЬрд╝рд╛рдЗрди рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХрд╛ рдЙрддреНрддрд░ рд╣реИ :)

рдЗрд╕ рд╣рдлреНрддреЗ рдХреЗ рд░рд┐рдПрдХреНрдЯ рдХреЙрдиреНрдл рд╕реЗ , рд░рд┐рдПрдХреНрдЯ рдлрд╛рдЗрдмрд░ (рд░рд┐рдПрдХреНрдЯ 16) рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ (рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ 17 рдХреЗ рд▓рд┐рдП):

screen shot 2017-03-16 at 15 55 51

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ async рд░рд┐рдПрдХреНрдЯ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рддрд░реАрдХреЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВ?

рдЦреИрд░, рдлрд╛рдЗрдмрд░ рд╕рд╛рдорд╛рди рдЬреНрдпрд╛рджрд╛рддрд░ рддреЗрдЬ/рдЪрд┐рдХрдиреА рд░реА- рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ? рд╕рд░реНрд╡рд░ рдкрд░, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕рд░реНрд╡рд░рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

@VanCoding рдиреЗ рдореЗрд░реЗ рдЙрдкрд░реЛрдХреНрдд рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬреЛ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рдерд╛ред рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдлрд╛рдЗрдмрд░ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ

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

https://github.com/siddharthkp/reaqt

рдХреБрдВрдЬреА asyncComponentWillMount рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рддреА рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

@siddharthkp рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдШрдЯрдХ рдХреНрдпрд╛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП asyncComponentWillMount рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рдмрд╕ рдЙрд╕ рд╡рд╛рджреЗ рдХреЛ рдмрд╛рд╣рд░ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рд░реЗрдВрдбрд░ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рдерд╛? рдпрд╛ рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдерд╛?

@fkrauthan

рдореИрдВ рдмрд╕ рдЙрд╕ рд╡рд╛рджреЗ рдХреЛ рдмрд╛рд╣рд░ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рд░реЗрдВрдбрд░ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рдерд╛?

рддреБрдо рд╕рд╣реА рд╣реЛ, рдареАрдХ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред

рдЕрдкреАрд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде async ssr (+ рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ + hmr) рдорд┐рд▓рддрд╛ рд╣реИред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ ssr рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣реА рдкреНрд░реЗрд░рдгрд╛ рдереАред

рдпрд╣ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП asyncComponentWillMount рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

  1. рдПрдХ рдЖрд╡реЗрджрди рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда/рд╕реНрдХреНрд░реАрди/рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ( рдпрд╣рд╛рдВ рдХрдИ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛)

  2. рдкреИрдЯрд░реНрди рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ, рдЕрдЧрд░ рдкреЗрдбрд╝ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рдкреИрдЯрд░реНрди рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдШрдЯрдХ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЗрд╕реЗ рд░реЛрдХ рдХрд░ рд░рдЦрддрд╛ рд╣реИред

@рд╕рд┐рджреНрдзрд╛рд░реНрдердХрдк рдиреЗрдХреНрд╕реНрдЯ.рдЬреЗрдПрд╕ (рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЙрдиреНрдл рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдореЗрдВ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдкрд░ рдЖрдкрдХрд╛ рд░реЗрдкреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ?

https://github.com/zeit/next.js

рд╡реИрд╕реЗ рднреА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдЖрдИрдПрдордПрдЪрдУ рдСрдл-рд╡рд┐рд╖рдп рд╣реИ, рдЬреЛ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рд╡рд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рд╣реА рд╕рдорд░реНрдерди рд╣реИред

рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдЖрдИрдПрдордПрдЪрдУ рдСрдл-рд╡рд┐рд╖рдп рд╣реИ, рд╣рдо рдЬрд┐рд╕ рдЪреАрдЬ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рд╡рд╣ рд░рд┐рдПрдХреНрдЯ рдХреЗ рднреАрддрд░ рд╣реА рд╕рдорд░реНрдерди рд╣реИред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реБрдБред reaqt рдореБрджреНрджреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧрдХреЗрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реИред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдШрдЯрдХ рдХрд╛ рдкреНрд░реЛрдк рдПрдХ рд╡рд╛рджреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП

const AsyncUser = props => fetchUser()
  .then(data => (
     <User {...data} />
   ))

рдпрджрд┐ рд╕рдорд░реНрдерд┐рдд рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЬрдЯрд┐рд▓ рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ рдФрд░ рд╕рдВрднрд╡рддрдГ рдирдП рдПрд╕рд┐рдВрдХреНрд╕ рдкреИрдЯрд░реНрди рдЦреЛрд▓ рджреЗрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдореИрдВ ssr рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рди рдХреЗрд╡рд▓ рдкреНрд░реЗрдбрд┐рдХреНрдЯ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ рдореЗрдВ рдПрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЛ рднреА, рдореИрдВ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░реЗрдВред

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

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

рдпрд╣ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ - рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рд▓рд┐рдЦрд╛ рдерд╛ред рдХреЛрд╢рд┐рд╢ рдХрд░рдХреЗ рджреЗрдЦреЛ! рдореИрдВ

https://github.com/davnicwil/react-frontload

<AsyncComponent 
  delayRendering={LoadingComponent}
> 
   {/*return a promise that returns a component here*/}
</AsyncComponent>

рд╕рднреА рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рд╣реИ

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

рдореИрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ https://github.com/timurtu/react-render-async

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ async рдШрдЯрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, @timurtuред

...рдЕрд░реЗ рд╕рдм рд▓реЛрдЧ, рдмрд╕ рдпрд╣рд╛рдБ рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рдмрд╣реБрдд рд╕реАрдзреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдФрд░ рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

  • рдПрдХ рдХреЗ рд▓рд┐рдП, SSR рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реВрдЯ-рд╕реНрддрд░реАрдп рдбреЗрдЯрд╛-рдлрд╝реЗрдЪрд┐рдВрдЧ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ:
    Redux-рдлрд░реНрд╕реНрдЯ рд░рд╛рдЙрдЯрд░ рдбреЗрдЯрд╛-рдлрд╝реЗрдЪрд┐рдВрдЧ: async рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП 80% рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛
  • Redux рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЕрдм рдмреЗрд╡рдХреВрдлреА рднрд░рд╛ рд╕рд░рд▓ рд╣реИ, рдпрд╣рд╛рдБ Redux-First рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреЗрдк рдмрд╛рдп рд╕реНрдЯреЗрдк рдЧрд╛рдЗрдб рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ: рд╕рд░реНрд╡рд░-рд░реЗрдВрдбрд░ рдЬреИрд╕реЗ рдкреНрд░реЛ / w Redux-рдлрд░реНрд╕реНрдЯ рд░рд╛рдЙрдЯрд░ 10 рдЪрд░рдгреЛрдВ рдореЗрдВ
  • рдЕрдВрдд рдореЗрдВ, рдХреЛрдб-рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛрдиреЛрдВ (рдпрд╛рдиреА SSR + рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рджреЛрдиреЛрдВ) рднреА рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ ред рдпрд╣ рдПрдХ рд╕рд╛рде рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдПрдХ рдкреНрд░рдореБрдЦ рджрд░реНрдж рдмрд┐рдВрджреБ рд░рд╣рд╛ рд╣реИ , рдХреБрдЫ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рддрдХ рд╕рдореБрджрд╛рдп рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ + babel-plugin-universal-import + рд╡реЗрдмрдкреИрдХ-рдлреНрд▓рд╢-рдЪрдВрдХреНрд╕ (рдФрд░ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ-рд╕реАрдПрд╕рдПрд╕-рдЪрдВрдХреНрд╕-рд╡реЗрдмрдкреИрдХ-рдкреНрд▓рдЧрдЗрди ) рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд╛рд░ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджрд┐рдП рдЧрдП рд╕рдЯреАрдХ рд╡рд┐рдЦрдВрдбреВ рдХреЛ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдЪрдВрдХ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ @timurtu рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдФрд░ рдХрдИ рдРрд╕реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ main.js , рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рдореВрд▓реНрдпрд╛рдВрдХрди, рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдлрд┐рд░ рдЕрдВрдд рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рдмрд╛рдж рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ред рдпреЗ рдЕрд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА (рдПрдлрдУрдпреВрд╕реА) рдХреЗ рдлреНрд▓реИрд╢ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкреГрд╖реНрда рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдЯреАрдХ рднрд╛рдЧ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВред рдпреВрдирд┐рд╡рд░реНрд╕рд▓ - рдкреИрдХреЗрдЬ рдХреЗ рдореЗрд░реЗ рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рдирд╛рдо - рдЖрдкрдХреЛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡реЗрдмрдПрдкреНрд╕ рдХреА рддрд░рд╣ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рддрд░реАрдХреЗ рд╕реЗ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ (рдЯреАрдЯреАрдЖрдИ) рд╕рдордп рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ: рд░рд┐рдПрдХреНрдЯ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ 2.0 рдФрд░ рдмреЗрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ-рдЖрдпрд╛рдд

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдорд╛рд░реНрдЧ рд╕реНрддрд░ рдмрдирд╛рдо рдШрдЯрдХ рд╕реНрддрд░ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ/рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рд▓рд┐рдВрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рд╕реНрддрд░ рддрдХ рдЙрдмрд╛рд▓ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЗрд╕реНрдЯреЗрдб рдШрдЯрдХ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ (рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЗ рдмрдЬрд╛рдп) рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдлрд╝реЗрдЪ рд╣реИ, рддреЛ рдареАрдХ рд╣реИ, рдЖрдк componentDidMount рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреА рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд░реВрдЯ рдЗрдХрд╛рдИ рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЕрдиреБрдмрдВрдз рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╕рдордЭрддреЗ рд╣реИрдВред рдКрдкрд░ рдХреЗ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧ рднреА рдЗрд╕реА рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗред Redux-First Router рдЗрд╕реЗ "рдЕрдиреБрдмрдВрдзреЛрдВ" рдХреА рддрд░реНрдЬ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрддрд╛ рд╣реИ рдЬреЛ Redux рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╕реБрдЦрдж рдмрдирд╛рддрд╛ рд╣реИред

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

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

RLR рдФрд░ RFR рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ RFR рд╣рдореЗрд╢рд╛ LOCATION_CHANGED рдмрдЬрд╛рдп рдкреНрд░рддрд┐ рдорд╛рд░реНрдЧ рдПрдХ рдЕрд▓рдЧ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ (рдпрд╛рдиреА URL рдкрд░рд┐рд╡рд░реНрддрди) рднреЗрдЬрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛ рдХреА рддрд░рд╣, рдЕрдкрдиреЗ рд░рд┐рдбреНрдпреВрд╕рд░ рдореЗрдВ URL рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЫреЛрдЯрд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдХрд╛рд░рдг, рдЗрд╕реЗ <Route /> рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ Redux рднреВрдорд┐ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд▓реЙрдиреНрдбреНрд░реА рд╕реВрдЪреА рднреА рд╣реИ, Redux-First рд░рд╛рдЙрдЯрд░ рдбреЗрдЯрд╛-рдлрд╝реЗрдЪрд┐рдВрдЧ рд╕реЗ рд░реВрдЯ thunks рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡, рд░рд┐рдПрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрд╢рди, рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ, рдкреНрд░реАрдлрд╝реЗрдЪрд┐рдВрдЧ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

@faceyspacey рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╣реЛ рд░рд╣реА рдереА, рдЬрдм рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП async рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЙрдкреНрд╕ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, react-native-vector-icons рдПрдХ рд╡рд╛рджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ componentWillMount рдпрд╛ redux X_GET_START , X_GET_END , рдФрд░ X_GET_ERROR рдПрдХреНрд╢рди рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрд╕рд┐рдВрдХ рдШрдЯрдХреЛрдВ рдХреЛ рд░рд╛рдЬреНрдп рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШрдЯрдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдорддрджрд╛рди рдбреЗрдЯрд╛ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╣реЛрдирд╛ рдФрд░ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ

@faceyspacey рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдорд╛рд░реНрдЧ рд╕реНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ?

рдмреЗрд╣рддрд░? рдХрд╣рд╛рдВ? рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдкрд░? рдлреЗрд╕рдмреБрдХ рдЬреИрд╕реЗ рдмрдбрд╝реЗ рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдРрдкреНрд╕ рдкрд░?

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

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

рдпрджрд┐ рдХреЛрдИ рдПрд╕рдПрд╕рдЖрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рдореИрдВ рдШрдЯрдХ рд╕реНрддрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдЖрдкрдХреА рдкрд░реАрдХреНрд╖рдг рд░рдгрдиреАрддрд┐ рдирд┐рд░реНрдмрд╛рдз рдФрд░ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдпрджрд┐ рдЖрдк рдореЗрдЧрд╛ рдХреЙрд░реНрдк рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрдм рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╢реАрд░реНрд╖ рдорд╛рд░реНрдЧ рд╕реНрддрд░ рдХреЛ рдЫреВрдиреЗ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ FB рдиреЗ рд░рд┐рд▓реЗ рдФрд░ рдЧреНрд░рд╛рдлрд╝рдХреНрдпреВрдПрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕ рдорд╛рд░реНрдЧ рдХрд╛ рдмреАрдбрд╝рд╛ рдЙрдард╛рдпрд╛ рд╣реИред рдорд╛рдорд▓реЗ рдХреА рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреА 100 рдХрдВрдкрдирд┐рдпрд╛рдВ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдЗрд╕ рдирд╛рд╡ рдореЗрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ/рдРрдкреНрд╕/рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрд▓реЛрдХреЗрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдорд╛рд░реНрдЧ рд╕реНрддрд░ рдХреА рдЪреАрдЬрд╝ рдХреЛ рд▓рдЯрдХрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреИрдХреЗрдЬ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Redux-First Router рдХреА рддрд░рд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдкреЗрдЪреАрджрд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдорд╛рд░реНрдЧ рд╕реНрддрд░ рдХреЛ рдЫреВрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрддреА рд╣реИ ред рдХреЛрдбрд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╣реЛрдордкреЗрдЬ рдкрд░ рдмрд╕ рдбреЗрдореЛ рджреЗрдЦреЗрдВ:

https://www.codesandbox.io

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд┐рдВрдХ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ (рд░реЗрдВрдбрд░ рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ)ред рдпрд╣ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рд╡реЗрдЯ рдЪрд┐рд▓реНрдбреНрд░рди рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░реЗрдВрдбрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╡рд╛рджрд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЙрдкрджреЗрд╢ рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ https://github.com/3axap4eHko/preact-async-example

@faceyspacey рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд┐рд╕реНрддреГрдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Redux-First рд░рд╛рдЙрдЯрд░ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдФрд░ рд╕реНрд╡рдЪреНрдЫ рдмрдирд╛рддрд╛ рд╣реИред

рдмрдбрд╝рд╛ рдзрдиреНрдпрд╡рд╛рдж!

@raRaRa рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛! ...рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рддрдХ рд░реВрдЯ рд▓реЗрд╡рд▓ рдбреЗрдЯрд╛-рдлрд╝реЗрдЪрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд░рд┐рдПрдХреНрдЯ рд░рд┐рдПрдХреНрдЯ v3 рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдереЗ, рдФрд░ v4 рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреИрдЯрд░реНрди рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ react-router-config рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде), рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ v4 рдореЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдмрд╛рдж рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ Redux рдореЗрдВ рдирд╣реАрдВ рд░рд╣рддрд╛ рд╣реИред рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдХрд┐ redux рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдкреВрд░реНрдг "рдорд╛рд░реНрдЧ рд╕реНрддрд░" рдЕрдореВрд░реНрддрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм RFR рдХреЗ рд╕рд╛рде, рд╣рдо "рд░реВрдЯ рд▓реЗрд╡рд▓" рдмрдирд╛рдо "рдХрдВрдкреЛрдиреЗрдВрдЯ рд▓реЗрд╡рд▓" рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред рд░рд┐рд▓реЗ рдФрд░ рдЕрдкреЛрд▓реЛ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдиреЗ рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдШрдЯрдХреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЙрди 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреАрд╡рдирдЪрдХреНрд░ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдХреЗ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЪреЛрдЯ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред .

рдЙрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЕрдВрддрддрдГ рдЖрд░рдПрдлрдЖрд░ рдХрд╛ рдЕрдкреЛрд▓реЛ рдХреЗ рд╕рд╛рде рд░реВрдЯ рд▓реЗрд╡рд▓ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рд╣реЛрдЧрд╛ред рдШрдЯрдХ рд╕реНрддрд░ рдкрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд▓рд╛рдн рд╣реИрдВ, рдЙрдкрд░реЛрдХреНрдд рджреБрд░реНрд▓рдн рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдШрдЯрд╛рдХрд░ред рдХрдо рд╕реЗ рдХрдо 80% рд╕рдордп (рдФрд░ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдРрдк рдореЗрдВ 100%), рдЖрдк рдорд╛рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрдЯрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдкрдиреА "рджреГрд╢реНрдп рдкрд░рдд" рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдХреЛ URL рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЕрдкреЛрд▓реЛ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдЖрдк рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╡рд┐рд░реЛрдзреА-рдкреИрдЯрд░реНрди рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдВрддрддрдГ "рд░рд╛рдЬреНрдп" рдХреЛ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рджреГрд╢реНрдп рдкрд░рдд рдХреЛ рд░рд╣рдиреЗ рджреЗрдХрд░ рдЖрдкрдХреЛ рджрд░реНрдж рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдВрдЧреЗред рдпрд╛рдиреА рд░рд╛рдЬреНрдп рдЙрди рдбреЗрдЯрд╛-рдлрд╝реЗрдЪрд┐рдВрдЧ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдЯреАрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд░рд┐рд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рддреЛ рдЖрдк рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдкреИрд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдФрд░ рдкреНрд░реЛрдк рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ 2 рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣ рд╕рд╛рдорд╛рди рд╣реИ рдЬреЛ рдЕрдм рджреГрд╢реНрдп рдкрд░рдд рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкреБрди: рдкреНрд░рддрд┐рдкрд╛рджрди рддрдВрддреНрд░ рдХреЗ рдЕрдзреАрди рд╣реЛрддрд╛ рд╣реИ (рдпрд╛рдиреА рдЬрдм рдЬреАрд╡рдирдЪрдХреНрд░ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдкреНрд░рддреНрдпреЗрдХ рдРрдк рдПрдХ рдмрд┐рдВрджреБ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд/рдмрджрд▓реЗ рдЧрдП рдЕрд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░реЛрдк рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╕рднреА рдРрдкреНрд╕ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░реЙрдкреНрд╕ рд╕реЗ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдмрджрд▓ рдЧрдП рд╣реИрдВред рдпрд╛рдиреА рдкреНрд░реЙрдкреНрд╕ рдЬреЛ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

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

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

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

@faceyspacey рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкреЛрд▓реЛ рдФрд░ рди рд╣реА рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рд╡реЗ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред

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

рдореИрдВрдиреЗ рдПрдорд╡реАрд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдЬрд╣рд╛рдВ рджреГрд╢реНрдп рднрд╛рдЧ рдбреЗрдЯрд╛ рд▓рд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рднрдпрд╛рдирдХ рд╣реИред рджреЛрдиреЛрдВ рдореБрдЭреЗ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рджреГрд╢реНрдп/рдШрдЯрдХ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрдард┐рди/рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП, рд░реЗрдбрдХреНрд╕-рдлрд░реНрд╕реНрдЯ рд░рд╛рдЙрдЯрд░ рдПрдорд╡реАрд╕реА рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рднрд╛рдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдорд╛рд░реНрдЧреЛрдВ рдХреА рддрд░рд╣ рд╣реИред рдЬреЛ рдЗрддрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ :)

рд╢реБрдХреНрд░рд┐рдпрд╛ред

рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдирдпрд╛ рд╕реНрдЯреИрдХ рдпрд╣ рд╣реИ:

рдПрдо: рд░реЗрдбрдХреНрд╕
рд╡реА: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рд╕реА: рд░реЗрдбрдХреНрд╕-рдлрд░реНрд╕реНрдЯ рд░рд╛рдЙрдЯрд░ (рдЬрд▓реНрдж рд╣реА рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "рд░реВрдбреА" рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)

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

рдпрд╣ рдирдП рдХреНрд▓рд╛рдЗрдВрдЯ-рдкреНрд░рдердо рд╕реНрдЯреИрдХ рдмрдирд╛рдо рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдПрдорд╡реАрд╕реА рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд╣реА 3 рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдЕрд▓рдЧрд╛рд╡ рд╣реИред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛ3 рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд/рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рд╣реИ, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╣реИ рдХрд┐ рдЕрддреАрдд рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдореЙрдбрд▓ рдорд┐рд▓рддреЗ рдереЗ рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рдереЗ; рдФрд░ рдЕрдм рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ (рдЖрд░рдПрдлрдЖрд░) рддреБрд░рдВрдд рдПрдХ рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИ ("рдпреВрдЖрдИ рдореЙрдбрд▓" рдпрд╛рдиреА рд░реЗрдбрдХреНрд╕ рд░рд╛рдЬреНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдбреЛрдореЗрди рдореЙрдбрд▓ (рд░реЗрдбрдХреНрд╕ рд░рд╛рдЬреНрдп рдореЗрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд) рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж рджреВрд╕рд░реА рдмрд╛рд░ рджреГрд╢реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ ред

рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣рд╛рдБ рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рд╣реИ https://github.com/bananaoomarang/isomorphic-redux

@ harut55555 рдЖрдИрдбреАрдХреЗ рдпрд╣ рд╕рд┐рд░реНрдл рдореИрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ

рдХреЛрдИ рдмрджрд▓рд╛рд╡? рдЬрд╛рд░реА 16 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░реЗрдбрдХреНрд╕ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдпрд╛ рд░реЗрдбрдХреНрд╕ рдердВрдХ рдЬреИрд╕реЗ рдЯреВрд▓реАрдВрдЧ рдХреЗ рд╕рд╛рде рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛

<App>
    <Page>
        <AsyncModule hre="different.com/Button.react.js" /> downloaded from external url on server or client
    </Page>
</App>

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдРрдк рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдШрдЯрдХ рд╣реЛрдВрдЧреЗ

рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдШрдЯрдХ рдХреЗ рдмрдЬрд╛рдп рдбреЗрдЯрд╛/рд╕рд╛рдордЧреНрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ?

рдХрдм? рдореЗрд░реЗ рдкрд╛рд╕ рдЧрддрд┐рд╢реАрд▓ рдкреГрд╖реНрда рд╣реИрдВ рдФрд░ рдШрдЯрдХ рд╣реЛ рднреА рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╣реАрдВ рднреА

рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ https://reactjs.org/docs/conditional-rendering.html

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

рдЕрдкреЛрд▓реЛ рд╕реЗ @graphql рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕реБрдкрд░ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдПрдХреНрдЯ-рд░рд╛рдЙрдЯрд░ v4 рдШрдЯрдХ-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рд╕рд░рд▓ рдХрдВрдкреЛрдЬрд╝реЗрдмрд▓ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрдирд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ Redux рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЗрдЯ рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИрдВред

рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, render() рд▓рд┐рдП рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЖрдк рдЕрднреА рдЬреИрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдк рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ)ред

рдлрд┐рд░ @graphql рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд░реЗрдВрдбрд░() рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рдмрд╛рдХреА рд╕рдм рд╕рд┐рд░реНрдл рд╕рд╛рджрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред

рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ JSConf рдЖрдЗрд╕рд▓реИрдВрдб рдореЗрдВ рдПрдХ рднрд╛рд╖рдг рджрд┐рдпрд╛ рдерд╛ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдЧрд╛рдореА async рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ (рджреВрд╕рд░рд╛ рднрд╛рдЧ рджреЗрдЦреЗрдВ): https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react -16.рдПрдЪрдЯреАрдПрдордПрд▓ред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЕрдм @acdlite рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдХреИрд╕реЗ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдЙрддреНрддрд░реЛрддреНрддрд░ рдлреНрд▓рд╢рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИрдВ: https://www.youtube.com/watch?v= z-6JC0_cOns

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрди рд╡рд╛рд░реНрддрд╛рдУрдВ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдирдВрджрд┐рдд рд╣реЛрдВрдЧреЗ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдпрд╛ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рдгрдиреАрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЕрдВрдЧреВрдареА рдпрд╛рдж рд╣реИред рд╣рдо рд╢рд╛рджреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдПрдХ рд╕рд╛рде рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЕрднреА рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдореБрдЭрд╕реЗ рдорд┐рд▓рдиреЗ рдЖрдПрдВред рд╕рдордп рдиреЗ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдкреНрдпрд╛рд░

рдкреЗрдбрд╝ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП ReactDOMServer.renderToStaticMarkup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдПрдХ рдмреБрдХрдорд╛рд░реНрдХ рд░рдЦреЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд┐рд░реНрднрд░рддрд╛ (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдПрдкреАрдЖрдИ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ) рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдФрд░ рдкреЗрдбрд╝ рдкрд░ рдЪрд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдкреВрд░рд╛ рдкреЗрдбрд╝ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо ReactDOMServer.renderToString рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ HTML рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ, рдЬреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдм рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ react-baconjs : render-to-html.js рдореЗрдВ рд▓рд┐рдпрд╛ рд╣реИ ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЕрдиреНрдп рдореБрджреНрджреЗ рдореЗрдВ @gaearon рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред

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

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

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

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

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

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

рдЙрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдШреЛрдВрд╕рд▓реЗ рдХреА рд╕рдорд╕реНрдпрд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдпрдж рдпрд╣ рдкреВрд░реА рдПрд╕рд┐рдВрдХ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдорд╕реНрдпрд╛) рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд░рд╣рд╕реНрдп рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВ

FYI рдХрд░реЗрдВ рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

https://reactjs.org/blog/2018/11/27/react-16-roadmap.html#suspense -for-server-rendering

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ @gaearon!

@davnicwil react-baconjs рдЕрд╕реАрдорд┐рдд рдЧрд╣рд░рд╛рдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

@gaearon рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреНрд░рд┐рдПрдЯ-рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдореЗрдВ

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

@ рд╕реНрдЯреАрд╡-рдЯреЗрд▓рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдлреНрд░рдВрдЯрд▓реЛрдб рдЕрдм 1.0.7 рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдШрдЯрдХ рдШреЛрдВрд╕рд▓реЗ рдХреА рдЕрд╕реАрдорд┐рдд рдЧрд╣рд░рд╛рдИ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

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

рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдРрдк рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЙрдкрдпреЛрдЧ-рдПрдкреАрдЖрдИ рдмрдирд╛рдпрд╛, рдЬреЛ рдПрдХ рдХрд╕реНрдЯрдо рд╣реБрдХ рд╣реИ рдЬреЛ рдПрдкреАрдЖрдИ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрд╕рдПрд╕рдЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдЬрд░реВрд░рддрдордВрдж рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

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

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

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

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

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

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