Redux: рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз: Redux "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ", рд▓рд░реНрдирд┐рдВрдЧ рдХрд░реНрд╡, рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдФрд░ рдУрдкрд┐рдиреЗрдЯреЗрдбрдиреЗрд╕

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдорд╛рд░реНрдЪ 2017  ┬╖  108рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: reduxjs/redux

рд╕рдВрдХрд▓реНрдк: Redux рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

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

Redux Starter Kit рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ (рдФрд░ рдпрд╣ рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ "Vision for Redux Starter Kit" рдШреЛрд╖рдгрд╛рдкрддреНрд░ рджреЗрдЦреЗрдВ ред

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

рдореИрдВрдиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @tannerlinsley рдХреЗ рд╕рд╛рде рдЕрднреА рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред рд╣рдордиреЗ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА, рдЬреЛ

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

рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ

рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ / рд╡рд░реНрдмреЛрд╕рд┐рдЯреА

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

рдЕрдореВрд░реНрдд рдФрд░ рд╕реАрдЦрдирд╛

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

рд╕рдорд╕реНрдпрд╛

  • "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рд╢рд┐рдХрд╛рдпрддреЗрдВ рдЕрдзрд┐рдХрддрд░ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ?
  • рдирдП рд╢рд┐рдХреНрд╖рд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП Redux рдХреЗ рд╕рдмрд╕реЗ рдХрдард┐рди рдкрд╣рд▓реВ рдХреНрдпрд╛ рд╣реИрдВ?
  • "рдХреЛрдИ рд░рд╛рдп рдирд╣реАрдВ" рдХреНрд╖реЗрддреНрд░ рдХреНрдпрд╛ рд╣реИрдВ рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВ?

рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди

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

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

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

рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛:

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

рдореВрд▓ рд░реВрдк рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Redux рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдмреНрд░рд╛рдВрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИред
рд╕рд╛рде рд╣реА, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдкрд░ рддреБрдо рдХрд░ рд╕рдХрддреЗ рд╣реЛред

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

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:

  • рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реЗрдбрдХреНрд╕-рдкреНрд░реАрд╕реЗрдЯ рдкреИрдХреЗрдЬ рдЬрд┐рд╕рдореЗрдВ рд░реЗрдбрдХреНрд╕, рд░рд┐рдПрдХреНрдЯ-рд░реЗрдбрдХреНрд╕, рд░реЗрдбрдХреНрд╕-рдердВрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рд╛рде рд╡рд╛рдпрд░реНрдб рд╣реИ
  • dispatch(actionType, payload) рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдЬрдВрдкрд╕реНрдЯреЗрдЯ-рд╕реНрдЯрд╛рдЗрд▓ рд░реЗрдбреНрдпреВрд╕рд░ рдирд┐рд░реНрдорд╛рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП createReducer({[actionType]: (state, payload) => state}, initState)

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

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

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

Redux рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп "рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛" рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдкрдардиреАрдп рдмрдирд╛рдирд╛ рд╣реИ

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

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

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

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

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

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

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

// meta code
dispatch(ACTION);

onAction = {
  ACTION: [
    // handler 1: hide spinner here,
    // handler 2: change status there,
    // handler 3: update entity
  ],
};

рдЕрдВрдд рдореЗрдВ рдореИрдВ redux-interactions + redux-tree рдФрд░ рдореИрдВ рдЕрдм рддрдХ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВред

рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг:

рдзреНрдпрд╛рди рджреЗрдВ, рдЖрд╡реЗрджрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реЛрдЧрд╛ :) рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рд░реАрдпрд▓рдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рд╕рд╛рдЧрд╛ рдпрд╛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдердВрдХ/рд╡рд╛рджреЗ рдкрд░ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ

  • рд░реЗрдбрдХреНрд╕-рдердВрдХ
  • рд╡рд╛рджрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░
  • рд╣рдорд╛рд░рд╛ "рдПрдкреАрдЖрдИ рд░реИрдкрд░", рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдВрдЦ рдРрдк рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░реИрдкрд░ рд╣реИ, service(name, method, ...opts) рдЬреЛ рдкреЗрд▓реЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХреНрд╢рди рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рд╡рд╛рджрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЗрд╕реЗ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ x_FULFILLED рднреЗрдЬрддрд╛ рд╣реИ , x_PENDING , рдФрд░ x_REJECTED )ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд╛рдо рднреА рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

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

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

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

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

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

Redux-thunk рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ redux рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рдЭреБрдХрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди/рдХреЙрд▓рдмреИрдХ рд╣реИ, рдЬреЛ рдХрд┐ рдпрджрд┐ рдЖрдк JS рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдЙрдард╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореБрдЭреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкреИрдХреЗрдЬ рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИ, рдПрдХ рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ "рд╕рд░реНрд╡реЛрддреНрддрдо-рдЕрднреНрдпрд╛рд╕-рд╣рдореЗрд╢рд╛-рд░реЗрдбрдХреНрд╕" рдХреЗ рдмрдЬрд╛рдп "рд╕реАрдЦрдиреЗ-рд░реЗрдбрдХреНрд╕" рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реЛред рдЬрд┐рд╕ рддрд░рд╣ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХреА рдЧрдИ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреНрд╡реАрдХрд┐рдВрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реЗрдбрдХреНрд╕-рдердВрдХ рд╕реЗрдЯрдЕрдк рдХреЛ рд╕рд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЖрджрд┐ред "рдирд┐рдХрд╛рд▓рдиреЗ" рдХрд╛...

рдмрд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореЗрд░реА рджреВрд╕рд░реА рдЪрд┐рдВрддрд╛ рд╣реИ: рд╣рдо рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдмреВрдд рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрд╕ рджреЗрд╡реЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореВрд╣ рдЕрднреА рддрдХ рддреАрд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдЖрдзрд╛рд░рднреВрдд ES(6|2015) рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред , рд╕рдордЭ рдХреА рдХрдореА, рдбрд░рд╛рдиреЗ-рдзрдордХрд╛рдиреЗ рдЖрджрд┐ рдХреЗ рдХрд╛рд░рдг, рдЬреЛ рд▓реЛрдЧ Redux рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ Redux рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЛ рд╕реАрдЦрдиреЗ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ?

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

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

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

рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдврд╛рдВрдЪреЗ рдХреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд▓рдн рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ (рдирдпрд╛ рдФрд░ рдЕрдиреБрднрд╡реА)ред

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

Redux рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдЦрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдЕрдореВрд░реНрдд рдкрд░рддреЗрдВ рдЕрдХреНрд╕рд░ рдЪрд▓реА рдЬрд╛рддреА рд╣реИрдВ

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

рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛/рд░рд┐рдбрдХреНрд╕ рдЬреАрд╡рдирдЪрдХреНрд░ рдХрд╛ рдПрдХ рдЖрд░реЗрдЦ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХрд╛рдо рдкрд░ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛:
React Redux Lifecycle

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

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

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

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

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

  • "рдореБрдЭреЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░' рдлрд╝рдВрдХреНрд╢рди рдХреНрдпреЛрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ?"
  • "рдореБрдЭреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП SOOO рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреВрдирд╛ рд╣реИ! рд╕рд╛рде рд╣реА, рдореИрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдирд╛рдореЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рджреЛрд╣рд░рд╛рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ рдФрд░..."
  • "рдореБрдЭреЗ рдХреЗрд╡рд▓ AJAX рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди 'рдорд┐рдбрд▓рд╡реЗрдпрд░' рдЪреАрдЬрд╝реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?"
  • "рдореБрдЭреЗ рд╣рд░ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ?"
  • "рдореБрдЭреЗ рдЗрд╕ dispatch рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдореБрдЭреЗ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реИ?"

рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг:

рдФрд░ рдЙрди "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рдЯреЙрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рд╕реВрдЪреАрдмрджреНрдз рдкрд╛рдВрдЪ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ " dispatch " рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _required_ рд╣реИред рд╢реЗрд╖ рдХреЗ рд▓рд┐рдП:

  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _have_ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ (рдореЗрд░реА рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ Idiomatic Redux: рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? )
  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕, рдПрдХреНрд╢рди рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП _have_ рдирд╣реАрдВ рд╣реИред рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП "рдмрддрдЦ" рдкреИрдЯрд░реНрди рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХрдИ рд░реЗрдбреНрдпреВрд╕рд░ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ "рдЫрд┐рдкрд╛рдиреЗ" рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рд╣реИред Redux рдЕрдВрддрддрдГ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреНрдпрд╛ рд╣реИред
  • рдЖрдк _can_ Redux рдХреЗ рдмрд╛рд╣рд░ async рдХрд╛рд░реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рдШрдЯрдХ рдореЗрдВред рд▓реЗрдХрд┐рди, рдбреИрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдореЗрдВ Redux рдореЗрдВ async рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? , рдЙрд╕ рддрд░реНрдХ рдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрдорддреМрд░ рдкрд░ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ Redux рд╕реНрдЯреЛрд░ рддрдХ рдкрд╣реБрдВрдЪ рд░рдЦрддреЗ рд╣реБрдП async рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ "рдЦрд╛рдорд┐рдпрд╛рдВ" рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ _don't_ рдХреЛ рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╡реЗ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ "рд╕реНрдкрд╖реНрдЯ" рддрд░реАрдХрд╛ рд╣реИрдВред рд▓реБрдХрдЕрдк рдЯреЗрдмрд▓, рдЕрдЧрд░/рдЕрдиреНрдп рдХрдерди, рдФрд░ рдХреБрдЫ рдФрд░ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдареАрдХ рд╣реИ (рдкреНрд░рддрд┐ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди: рдХреНрдпрд╛ рдореБрдЭреЗ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ? )
  • рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ _do_ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ store.dispatch() рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ Redux рдХрд╛ рдПрдХ рдореВрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рд░реНрдгрдп рд╣реИред рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдмрд╛рдВрдзрдиреЗ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЕрд╕рдВрдмрджреНрдз рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдЬрдм рднреА рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рднреА рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реНрдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @markerikson рджреНрд╡рд╛рд░рд╛

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

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

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

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

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

рд╣рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдореЙрдбрд▓ рдЕрдкрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдЫ @sunjay рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

#775 рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рдереА рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддреА рд╣реИ:

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

рддреЛ рд╣рд╛рдБ, Redux рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ "рд╕рд┐рд░реНрдл рдПрдХ рдкреИрдЯрд░реНрди" рд╣реИред рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛-рдкреВрд░реНрдг рд╣реИ - рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд░реНрдз-рдирд┐рдпреЛрдЬрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдиреНрд╣рд╛рдВрд╕рд░ рдкреБрдирд░реНрдЧрдарди ( #1702, #2214 ) рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдФрд░ рд╕рдВрднрд╡рддрдГ combineReducers рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ ( #1768 , #1792 , рдЖрджрд┐) рдмрдирд╛рддреЗ рд╣реИрдВред )

Redux рдХреЛ рдмрдирд╛рдП рд╣реБрдП рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, @jimbolla рдиреЗ #2214 рдореЗрдВ рд╕рднреА рдЬреНрдЮрд╛рдд рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдПрдХрддреНрд░ рдХреА, рдФрд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА Redux рдХреА рд╕рд╛рджрдЧреА рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреБрдЫ рдЕрднреА рднреА рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╕рд╛рд░ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ред

рдЕрд░реНрдз-рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдПрдХ рдЕрдиреНрдп рд╕реЗрдЯ, рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕рдореЗрдВ рдореЗрд░реА рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реБрдЪрд┐ рд╣реИ, " рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд▓реЙрдЬрд┐рдХ / рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕" рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ (рдкреНрд░рддрд┐ "рдПрд▓реНрдо / рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрд▓реЗрдмрд▓ рдлреНрд░рдВрдЯрдПрдВрдб" рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди ), рдФрд░ "рдкреНрд▓рдЧ -рдПрдВрдб-рдкреНрд▓реЗ рд░реЗрдбрдХреНрд╕ рд╕реЗрдЯрдЕрдк" (рдЬреИрд╕рд╛ рдХрд┐ https://github.com/brianneisler/duxtape/issues/1 , https://github.com/jcoreio/redux-features/issues/7 , рдЖрджрд┐ рдЬреИрд╕реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдФрд░ рдРрдк рд╕реЗрдЯрдЕрдк рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдирд╣реАрдВред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, @toranb рдиреЗ https://github.com/ember-redux/ember-redux рдкрд░ Redux рдХреЗ рд▓рд┐рдП рдПрдореНрдмрд░ рд░реИрдкрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмреЗрд╣рддрд░реАрди рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдПрдореНрдмрд░ рджреБрдирд┐рдпрд╛ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рд╕рдореНрдореЗрд▓рди" рдореЗрдВ _really_ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП ember-redux рдПрдХ рдЙрдЪрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯреЛрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ redux-thunk рдФрд░ рдРрд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рд╣рд╛рдБ, рдореИрдВ рдпрд╣рд╛рдБ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореИрдВ Redux рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдкреВрд░реЗ рдмреЛрд░реНрдб рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

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

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ https://github.com/acdlite/redux-actions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА redux рдХреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдмрд╕ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣реЛрдирд╛ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

https://egghead.io/courses/getting-started-with-redux
https://egghead.io/series/build-react-applications-with-idiomatic-redux

рд╕рдВрджрд░реНрдн: рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо: https://www.youtube.com/watch?v=mVVNJKv9esE

рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - redux-actions рдХреБрдЫ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ, .toString рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рд╕рдореАрдХрд░рдг рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╛рдл рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ redux-actions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ

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

рдореИрдВ рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЛ redux рд╕рд┐рдЦрд╛рддрд╛ рд╣реВрдБ рдФрд░ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд╛рдлреА рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдХрдИ рдореВрд╡рд┐рдВрдЧ рдкрд╛рд░реНрдЯреНрд╕: рд╕реНрдЯреЛрд░, рд╕реНрдЯреЗрдЯ, рд░рд┐рдбреНрдпреВрд╕рд░, рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕, рдПрдХреНрд╢рди, рдПрд╕рд┐рдВрдХ рдПрдХреНрд╢рди, рдорд┐рдбрд▓рд╡реЗрдпрд░, рдХрдиреЗрдХреНрдЯреЗрдб рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕
  • рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдРрдк рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЖрд░рдИрдПрд╕рдЯреА рдПрдкреАрдЖрдИ рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ: рд░реЗрдбрдХреНрд╕, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕, рд░реЗрдбрдХреНрд╕-рдердВрдХ (рдпрд╛ рдЕрдиреНрдп) + рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрджрд┐ рдЖрдк рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
  • рдЖрдкрдХреЛ рдХрд┐рддрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЛрдб рдбрд╛рд▓рдирд╛ рд╣реИ (рджреЗрдЦреЗрдВ _moving part_)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рдПрдХ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдорд╣рд╛рди рд╕рд╛рд░ рд╣реИрдВ рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕реБрдкрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рднреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рднреА UI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдо рддреМрд░ рдкрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдИ рдЪрд▓рддреА рднрд╛рдЧреЛрдВ рд╕реЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдереЗред рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рд░реЗрдбрдХреНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╡реИрд╕реЗ рд╣реА рд░рд╣ рд╕рдХреЗред

  • рд░рд┐рдПрдХреНрдЯ рд░реЗрдбрдХреНрд╕ рдЬреИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрд╕рд┐рдВрдХреНрд╕ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред
  • рдмрд╣реБрдд рд╕реА async рдХреНрд░рд┐рдпрд╛рдПрдБ REST API рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
  • рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдорд╛рд░реНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдШрдЯрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдлрд┐рд░ рд╡реЗ рдЕрдкрдиреА render рд╡рд┐рдзрд┐ рдореЗрдВ рдЧреВрдВрдЧрд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдХрдВрдЯреЗрдирд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕_, _рд╕реНрдорд╛рд░реНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕_, _рдбрдВрдм рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕_, _рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕_ рдФрд░ _рд░реЗрдбреНрдпреВрд╕рд░_ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдлрд╝рд╛рдЗрд▓ рд▓реЗрдЖрдЙрдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред
  • рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ _redux-cli_ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреИрд╕реЗ redux action loadUsers
  • рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдпрд╛ рд░реЗрдбрдХреНрд╕-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЬреИрд╕реЗ рдПрд╕рд┐рдВрдХ рдкрд░рдд рдкрд░ рдорд╛рдирдХреАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ (рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЗрдбрдХреНрд╕ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд╛рдорд░реНрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _one_ рдЬрдЧрд╣ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛)
  • рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рдЬреИрд╕реЗ рдбреЗрдХреЛрд░реЗрдЯрд░ (@connect)) рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореИрдкрд╕реНрдЯреЗрдЯрдЯреЙрдкрдкреНрд░реЙрдкреНрд╕ рдФрд░ рдореИрдкрдбрд┐рд╕реНрдкреИрдЪрдЯреЙрдкреНрд░реЙрдкреНрд╕ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (mobx рдХреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реАрдзрд╛ рд╣реЛрддрд╛ рд╣реИ)

рдЯреА

рд╕рд╣рдордд, redux-actions рдХреБрдЫ рд╕рд░рд▓ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдкреВрдЫрдиреЗ рджреЗрдВ: рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрдЯ-рдРрдк рдореЗрдВ react-scripts рдкреИрдХреЗрдЬ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреИрдмреЗрд▓ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╣реИрдВ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдордЭрджрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд redux-scripts рдкреИрдХреЗрдЬ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ redux-thunk рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп (рдирдХрд╛рд░рд╛рддреНрдордХ) рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕реБрдЭрд╛рдКрдВрдЧрд╛ (рдореИрдВ рд╢рд╛рдпрдж рдЕрдм рдЗрд╕рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛):

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

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

рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ dispatch рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░/рдХреЙрд▓рдмреИрдХ рд╕реЗ рд╣реИ"ред рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо connect рд╕реЗ react-redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ mapDispatchToProps рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЭреБрдХрд╛рд╡ рдХрд░ рд░рд╣реЗ рдереЗ, рд╣рдо рднреВрд▓ рдЧрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ред

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

@ рдмреЛрдзреА : redux-thunk 11 рд▓рд╛рдЗрди рд▓рдВрдмреА рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреИрд╕реЗ "рдердВрдХ рдХреНрдпрд╛ рд╣реИ?" . рдердВрдХреНрд╕ _are_ рдХрдВрдкреЛрдЬрд╝реЗрдмрд▓ рдЯреВ _some_ рд╣рдж рддрдХ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЖрдо рддреМрд░ рдкрд░ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ "рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рдЗрди рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВ, рдлрд┐рд░ рдЕрдкрдиреА AJAX рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдпрд╣рд╛рдВ"ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреЛрд╕реНрдЯ рд╣реИ рдЬреЛ Idiomatic Redux: Thinks on Thunks, Sagas, Abstraction, рдФрд░ Reusability рдкрд░ рдердВрдХреНрд╕ (рдФрд░ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╛рдЧ) рдХреЗ рдХреБрдЫ рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░реЗрдбрдСрдлрд╝

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдХреБрдЫ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЕрдореВрд░реНрдд рдкрд░рдд рдореЗрдВ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП _some_ "рдзрдиреНрдп" рдпрд╛ "рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд" рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рд╛рдЧ рдФрд░ рд╡реЗрдзрд╢рд╛рд▓рд╛ рджреЛрдиреЛрдВ рдорд╣рд╛рди рд╣реИрдВ, _if_ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд▓рдХреНрд╖реНрдп Redux рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ redux-thunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рднреА рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рдл, рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдФрд░ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдмреЛрдзрд┐: рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╖рдп, рд▓реЗрдХрд┐рди рд╕реЛрдЪрд╛ рдХрд┐ рд╢рд╛рдпрдж рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рдг рд╢реВрдиреНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░реАрдбрдореА рдореЗрдВ рд░рдЪрдирд╛ рдкрд░ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ:
https://github.com/gaearon/redux-thunk/blob/master/README.md

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

19 рдорд╛рд░реНрдЪ 2017 рдХреЛ 23:48 рдмрдЬреЗ рдмреЛрдзрд┐ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВ redux-thunk рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп (рдирдХрд╛рд░рд╛рддреНрдордХ) рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕реБрдЭрд╛рдКрдВрдЧрд╛ (рдореИрдВ рд╢рд╛рдпрдж рдЕрдм рдЗрд╕рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛):

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

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

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

(рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди...)

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рдг рд╢реВрдиреНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

рд╣реБрд╣, рдмрдврд╝рд┐рдпрд╛! рдорд╛рди рд▓реАрдЬрд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдмрд╣реБрдд рдХрд░реАрдм рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ред

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

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

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

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

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

DevTools рдореЗрдВ рдПрдХреНрд╢рди рд▓реЙрдЧ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдк рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реБрдЖ ,

рдЗрд╕ рдкреБрд▓-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЗрдЯрд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╡рд╛рд╣ рдХреА рддрд░рд╣ рдкрдХреНрд╖ рдкреНрд░рднрд╛рд╡ рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдПрдХ рддрд░рд╣ рд╕реЗ рдФрд░ рдвреЗрд░ рдмрдирд╛рддрд╛ рд╣реИ redux-saga рдпрд╛ redux-observable ред

@aikoven рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ (рдЕрддреАрдд рдореЗрдВ FETCH_USER рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрдо рд╣реИ (рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдХрд░рдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ)ред рдпрд╣ рдЕрдзрд┐рдХ "рдХрдорд╛рдВрдб-рд▓рд╛рдЗрдХ" рдФрд░ рдлрд┐рд░ "рдЗрд╡реЗрдВрдЯ-рд▓рд╛рдЗрдХ" рд▓рдЧрддрд╛ рд╣реИред

@blocka рд╣рдореЗрд╢рд╛ рдХреЛрдИ рди рдХреЛрдИ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реЛрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЛ FETCH_USER_STARTED рдФрд░ FETCH_USER_DONE / FETCH_USER_FAILED рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд░рд╛рдЬреНрдп рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

redux-actions

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

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

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

Redux рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдмрд╛рдд рд╣реИред рдпрджрд┐ рдЖрдк рдареАрдХ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ FETCH_X_STARTED рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ fetchX() рдПрдХреНрд╢рди рдирд┐рд░реНрдорд╛рддрд╛, рдФрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбреНрдпреВрд╕рд░, рдЖрджрд┐, рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЕрдореВрд░реНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ!

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ redux-thunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рднреА рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рдл, рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдФрд░ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

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

рдореИрдВ рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ: http://blog.isquaredsoftware.com/2017/01/idiomatic-redux-thinks-on-thunks-sagas-abstraction-and-reusability/

@Machiaweliczny рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХрд╣рд╛рдВ рд░рдЦрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ https://medium.com/@jeffbski/where -do-i-put-my-business-logic-in-a- рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕-рдЖрд╡реЗрджрди-9253ef91ce1#.3ce3hk7y0)ред рдЖрдк рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░реЗрд╖рдг рдкреНрд░рд╡рд╛рд╣ (рдердВрдХ, рдорд╣рд╛рдХрд╛рд╡реНрдп, рдЧрд╛рдерд╛, рдЬреЛ рднреА рд╣реЛ), рдХреЛ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рддрдХ рдХрднреА рднреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?

@dfbaskin

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

рд░реЗрдбреНрдпреВрд╕рд░, рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ (state, action) => state рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ "рддрд░реНрдХ рдЬреЛ рд░рд╛рдЬреНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ" рдЖрдо рддреМрд░ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрд▓реНрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдореЗрдВ, рдРрд╕реЗ рд╕рднреА рддрд░реНрдХ "рдЕрдкрдбреЗрдЯ" рдлрд╝рдВрдХреНрд╢рди (рд╣рдорд╛рд░реЗ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рдмрд░рд╛рдмрд░) рдореЗрдВ рд╣реИрдВред

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

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

@Machiaweliczny : рдЙрд╕ "рдереЙрдЯреНрд╕ рдСрди рдердВрдХреНрд╕" рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ "рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдердВрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ" рдЬреЛ рдореИрдВ рдХрд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЙрд╕рдХрд╛ _opposite_ рд╣реИ :)

рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рдЪрд░реНрдЪрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╖рдп рд╕реЗ рдереЛрдбрд╝рд╛ рджреВрд░ рдЬрд╛рдиреЗ рд▓рдЧреЗ рд╣реИрдВред (рдХреНрдпрд╛ рд╡рд╣ рдмрд╛рдЗрдХрд╢реЗрдб рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд╣рд╛рдВ рджреЗрдЦрддрд╛ рд╣реВрдВ? :))

рдореБрдЭреЗ рдореВрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рджреЗрдВ:

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

рдЗрдирд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреМрди рд╕реЗ рдареЛрд╕ рдХрджрдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдЧреИрд░-рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп, рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХрджрдореЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛:

1) рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ (рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд▓реНрдо рдореЗрдВ "рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк" рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдРрдк рдкреНрд░рдХрд╛рд░ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ред рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд╕рд╛рдзрд╛рд░рдг рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдореЗрдВ 90% рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рд▓реЛрдЧ рдЕрднреА рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВред рдЖрдЬ рддрдХ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд░ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдорд┐рдбрд▓рд╡реЗрдпрд░ (devtools, thunks) рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдпрд╣ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдХрд┐ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ Redux рдХреЛрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

2) рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд "рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реНрдЯреЛрд░" рдХреЗ рд╕рд╛рде Redux рдХреЛ create-react-app рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЗ рдкрд╛рд╕ 2 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдЕрдк рдФрд░ рд░рдирд┐рдВрдЧ Redux рдРрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдмрд╣реБрдд, рдмрд╣реБрдд рджреВрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк рд╕реЗ, рдореЗрд░рд╛ рдорддрд▓рдм рдРрдк рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ "рдХреНрд░рд┐рдПрдЯрд╕реНрдЯреЛрд░" рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЙрдЪрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдмрд╕ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрдм рд╡реЗ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" createStore рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЗрд╕реЗ рдмрдврд╝рд╛ рджреЗрддреЗ рд╣реИрдВред

рдпрд╣ рд╡рд╣рд╛рдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рдХреЛ рд╕реБрдмрд╣ 10:02 рдмрдЬреЗ рдлреНрд░реЗрдВрдХреЛрдЗрд╕ рд╡рд╛рд░реНрдб рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдЧреИрд░-рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп, рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХрджрдореЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛:

1.

рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ (рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде
рд╡рд┐рдиреНрдпрд╛рд╕? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд▓реНрдо рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛
рдПрдХ "рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк" рдкреНрд░рдХрд╛рд░, рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдРрдк рдкреНрд░рдХрд╛рд░ред рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдЬрдм рд▓реЛрдЧ рд╣реЛрдВ рддреЛ 90% рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдРрдкреНрд╕ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдореЗрдВ
рдмрд╕ рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдБред рдЖрдЬ рддрдХ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд░ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рдмреБрдирд┐рдпрд╛рджреА рдорд┐рдбрд▓рд╡реЗрдпрд░ (devtools, thunks) рдХреЗ рд╕рд╛рде
рд╣рд╕реНрддрд╛рдХреНрд╖рд░ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдХрд┐ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ
Redux рдХреЛрд░ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП
рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВред
2.

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдмрд╣реБрдд, рдмрд╣реБрдд рджреВрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/reactjs/redux/issues/2295#issuecomment-287806663 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AFUmCQYkUwjkCugevDBWC8TOu0HhWJTnks5rnqMWgaJpZM4MhnVF
.

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

const { makeIndicator, makePayloadAssignor } from '../shared/reducers';

const searchModule = combineReducers({
  searching: makeIndicator(c.SEARCH),
  results: makePayloadAssignor(c.SEARCH_RESPONSE, [])
});

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

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

Redux рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЗрд╕рдореЗрдВ рдЬрд╛рджреБрдИ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рджреЛрдкрд╣рд░ 12:44 рдмрдЬреЗ, рдорд╛рд░реНрдХрд╕ рдХреЛрдПрддреНрдЬрд╝реА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

const { makeIndicator, makePayloadAssignor } '../shared/reducers' рд╕реЗ;
рдХреЙрдиреНрд╕реНрдЯ рд╕рд░реНрдЪ рдореЙрдбреНрдпреВрд▓ = рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рд░реЗрдбреНрдпреВрд╕рд░ ({
рдЦреЛрдЬ: рдореЗрдХрдЗрдВрдбрд┐рдХреЗрдЯрд░ (рд╕реА.рд╕рд░реНрдЪ),
рдкрд░рд┐рдгрд╛рдо: makePayloadAssignor(c.SEARCH_RESPONSE, [])
});

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/reactjs/redux/issues/2295#issuecomment-287820595 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AACourLpL5--NJiRzrWmKFJ31cl5DXJrks5rnqzxgaJpZM4MhnVF
.

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

рдпрд╣ Redux рдкрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдореВрд▓реНрдпрд╡рд╛рди рд╡рд┐рд╖рдп рд╣реИред

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

рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА, @blocka! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

Redux рдЕрдкрдиреЗ рдиреНрдпреВрдирддрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрд╛рд░рдг рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ-рдИрд╢ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рдврд╛рдВрдЪреЗ" рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ (рдиреНрдпреВрдирддрдо рдХреЛрдб, рдиреНрдпреВрдирддрдо рд╕рд┐рджреНрдзрд╛рдВрдд)ред

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

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

рдореИрдВрдиреЗ рдХрд▓ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛: рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдпрд╛ рд░реЗрдбрдХреНрд╕ рдкрд░ рджреЛрд╖ рди рджреЗрдВ ред рдмреЗрд╢рдХ рдореИрдВ рдЗрд╕ рд╕рдм рдореЗрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдПрдХ рдЙрдиреНрдирдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдореВрд░реНрдд рдкрд░рддреЗрдВ рд╣реЛрдиреЗ рдХреА рдорд┐рд╕рд╛рд▓ рд╣реИред рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ, Tensorflow рдиреЗ Keras рдХреЛ рдХреЛрд░ API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдпрд╛: http://www.fast.ai/2017/01/03/keras/ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Redux рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдердо рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рдорд╛рди рдЕрдиреБрднрд╡ рд╣реИред Tensorflow рдХреЛ Redux рдФрд░ Keras рдХреЛ Jumpstate рдмрджрд▓реЗрдВред Redux рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╡рддрдГ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡реЗ рдПрдВрдЧреБрд▓рд░ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдмреВрдЯрдХреИрдВрдк рдореЗрдВ рд░рд┐рдПрдХреНрдЯ + рд░реЗрдбрдХреНрд╕ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦрдиреЗ рд╕реЗред рдЬрдмрдХрд┐ Redux рдХреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдВрднрд╡рддрдГ 80% рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдБ, рдЕрдЧрд░ redux рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛, рддреЛ рд╣рдо рдпрд╣ рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗред рднрд▓реЗ рд╣реА redux рдЙрдкрдпреЛрдЧреА рд╣реЛ рдпрд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдзреНрд╡рдирд┐, рд▓реЛрдЧ рддрдм рднреА "рдмреБрд░рд╛" рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реАрдЦ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпреЗ рднрд╛рд╡рдирд╛рдПрдБ рдорд╛рдиреНрдп рд╣реИрдВред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдпрд╣рд╛рдВ рдПрдХ рд╢рд┐рдХрд╛рдпрдд рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдХреНрд╕рд░ рд░реЗрдбрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирддрд╛ рд╣реВрдВ (рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдкрдереНрд░реЗрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ): рдпрд╣ рдХреЗрд╡рд▓ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕, рд░реЗрдбрдХреНрд╕-рдердВрдХ, рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдЗрддреНрдпрд╛рджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА "рдЖрд╡рд╢реНрдпрдХрддрд╛" рд╣реИред .

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЪрдореБрдЪ рдЙрди рд╕рднреА рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдирд╣реАрдВред
рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЗрдбрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдпрд╛ рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ? рд╣рд╛рдВред

рдХреНрдпрд╛ package.json рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИ? рдирд╣реАрдВ рд╡рд╛рдХрдИ рдореЗрдВ рдирд╣реАрдВред
рдХреНрдпрд╛ package.json рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ? рдмрд┐рд▓реНрдХреБрд▓ред

рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рд╕реНрд╡рдпрдВ рдХреЛ рд╡рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ ( create-redux-app рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА) рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╣рд╛рде рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ RTFM рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

рднрд▓реЗ рд╣реА redux рдЙрдкрдпреЛрдЧреА рд╣реЛ рдпрд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдзреНрд╡рдирд┐, рд▓реЛрдЧ рддрдм рднреА "рдмреБрд░рд╛" рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реАрдЦ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпреЗ рднрд╛рд╡рдирд╛рдПрдБ рдорд╛рдиреНрдп рд╣реИрдВ

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

Redux рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реБрдЖред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА :)

рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рд╕реНрд╡рдпрдВ рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ (рдХреНрд░рд┐рдПрдЯ-рд░реЗрдбрдХреНрд╕-рдРрдк рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА) рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред рдпрд╣ рддрд░реНрдХ рджреЗрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рд╣рд▓ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рднреА рдереЗ, рдЬрдм рд▓реЛрдЧ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЕрднрд┐рднреВрдд рд╣реЛрдиреЗ рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рдереЗред create-react-app рдЗрд╕ рд╕рдм рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ _рдЦреБрдж_ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

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

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ Redux рдХреЛрд░ рдореЗрдВ redux-thunk рдЬреИрд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬрдВрдкрд╕реНрдЯреЗрдЯ/рдЬрдВрдкрд╕реВрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдЭрдВрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

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


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

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

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

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

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

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

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

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

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

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:

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

рдЗрд╕рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдмреЗрд╣рддрд░ рдбреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рддрдирд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдвреЗрд░ рд╕рд╛рд░рд╛ред рдЬрдм Redux рдкреНрд░рд▓реЗрдЦрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП AngularJS 1 рдХреЗ рдбреЙрдХреНрд╕ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ AngularJS рдХреА рддрд░рд╣, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ рд▓реЗрдХрд┐рди AngularJS рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ "рд╢реЛ, рдбреЛрдВрдЯ рдиреЙрдЯ" рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддрд╛ рд╣реИред

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

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

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

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

рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдЦрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЪрд▓реЛ тЭдя╕П

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдкреИрдХреЗрдЬ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдКрдкрд░ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд╛рджрд┐рдд libs рдмрдирд╛рдХрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рднреА рдпрд╣реА рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдХреЛрд░ рдирд╣реАрдВ рдмрджрд▓рддреЗ, рд╕реБрдВрджрд░ рдХреГрдкрдпрд╛ред

@HenrikJoreteg , рдбрд░реЛ рдордд! рдореИрдВ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдЬрд┐рд╕ рдЪреАрдЬ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдХрднреА рднреА рдореВрд▓ рдХреЛ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реА рдирд╣реАрдВ рд╣реИред рдХреЛрд░ рдлреАрдЪрд░ рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдЦрдбрд╝рд╛ рд╣реИред :)

рдвреЗрд░ рд╕рд╛рд░рд╛ред рдЬрдм Redux рдкреНрд░рд▓реЗрдЦрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП AngularJS 1 рдХреЗ рдбреЙрдХреНрд╕ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ AngularJS рдХреА рддрд░рд╣, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ рд▓реЗрдХрд┐рди AngularJS рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ "рд╢реЛ, рдбреЛрдВрдЯ рдиреЙрдЯ" рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддрд╛ рд╣реИред

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

"рдХрдо рдЕрдзрд┐рдХ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛рдирд╛ рд╣реИ

@Phoenixmatrix , @Sylphony : рддреЛ, рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдбреЙрдХреНрд╕ рд╕реБрдзрд╛рд░ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛?

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ "рд╕реНрдЯрд╛рд░реНрдЯрд░-рд╕реНрдЯреЛрд░" рд░рдЦрдиреЗ рдХреЗ рдКрдкрд░ рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ (2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд╛рдЗрдЯ/рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрднрд╛рдЧ)ред

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

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

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

@derekperkins рд╣рдо "рдзрдиреНрдп" рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдо рд╕рд╣рдорддрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рдХреИрд╕реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреМрди рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?

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

рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ xkcd: https://xkcd.com/927/

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

Redux рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдирд╛ "рдореБрдЭреЗ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ" рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИрддреЛ рдореИрдВ рдЗрд╕реЗ рджреВрд░ рдХрд░ рджреВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЗ рд▓рд┐рдП рднреА, "рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛" рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

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

рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ CRA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: Babel рдФрд░ Webpack рдФрд░ ESLint рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рд╕реАрдЖрд░рдП рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЙрди рд╕рднреА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓, рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЪреБрдирддрд╛ рд╣реИ рдЬреЛ рд╢рд┐рдХреНрд╖рд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддреА рд╣реИред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ _if рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ_ред

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

рдЗрд╕реЗ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЙрдардиреЗ рдФрд░ рддреЗрдЬ рджреМрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ
рдХреЗрд╡рд▓ redux рдФрд░ рдЗрд╕ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░рдд рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ? рдЙрд╕
рдмрд╣реБрдд рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛ рд╡рд╣ рдПрдХ рдЭрдВрдбрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рджреЗрд╡ рдореЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕реАрдЦрдиреЗ рдХреЗ рдЕрд╡рд╕рд░реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред рдореЗрдВ
рдЗрд╕ рддрд░рд╣ рдЕрдореВрд░реНрдд рдкрд░рдд рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╢рд┐рдХреНрд╖рдг рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред
рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рдХреЛ рд╢рд╛рдо 4:14 рдмрдЬреЗ рдорд╛рд░реНрдХ рдПрд░рд┐рдХрд╕рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/reactjs/redux/issues/2295#issuecomment-287914805 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AFUmCactFzsw7etmGGP8MFK6kfNaOzTJks5rnvorgaJpZM4MhnVF
.

@sunjay рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдХреМрди рд╕рд╛ xkcd рд▓рд┐рдВрдХ рдерд╛ рдЬреЛ рдмрд┐рдирд╛ рдХреНрд▓рд┐рдХ рдХрд┐рдП рднреА рдерд╛ред :)

рдореИрдВ @markerikson рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдпрд╣ рд╣рд░ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╣рд░ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЛрд░ рд░реЗрдбрдХреНрд╕ рджреЗрд╡реЛрдВ рдХрд╛ рдПрдХ рд░рд╛рдп рд╡рд╛рд▓рд╛ рдмрдпрд╛рди рд╣реИ, "рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ"ред рдРрд╕реЗ рд╕рдордЭрджрд╛рд░ рдбрд┐рдлреЙрд▓реНрдЯ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджрд╛рдВрд╡ рд▓рдЧрд╛рдКрдВрдЧрд╛ рдХрд┐ рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ 80% рджреЗрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред

рдпрд╣ рдХреЛрд░ Redux рдкрд░ рд▓рд┐рдЦрд╛ рд╣реЛ рднреА рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╣реАрдВ рднреАред рдореБрдЭреЗ рдЕрдм рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ рдЬреЛ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред

Redux рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдЦрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЕрдореВрд░реНрдд рдкрд░рддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдХреНрд╕рд░ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ

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

рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛:

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

рдореВрд▓ рд░реВрдк рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Redux рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдмреНрд░рд╛рдВрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИред
рд╕рд╛рде рд╣реА, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдкрд░ рддреБрдо рдХрд░ рд╕рдХрддреЗ рд╣реЛред

рдореЗрд░реЗ рд▓рд┐рдП, рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЬрдм рдореИрдВ redux рд╕реАрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ src рдХреЛрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП 2 рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ, рдлрд┐рд░ api рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд░ рд╡рд┐рд╡рд░рдг рдбреЙрдХреНрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

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

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

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ async рд╕рдорд░реНрдердиред

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ redux-thunk, redux-saga ред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ async рд╕рдорд░реНрдерди

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

@gaearon рдХреА рдЯрд┐рдкреНрдкрдгреА рдПрдХрджрдо рд╕рд╣реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡реАрдк рдХрд┐рддрдирд╛ рд╡реНрдпрд╛рдкрдХ рд╣реИред рдореИрдВ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд Redux 2.0 рдХреА рд╕рдЯреАрдХрддрд╛ рдФрд░ рднрд╡реНрдпрддрд╛ рдФрд░ рд╢рдХреНрддрд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрдпрд╛рд░ рдФрд░ рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рднреА рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рд╕реБрдзрд╛рд░ рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ!

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рдЖрдХрд░реНрд╖рдХ рд▓рдЧрддрд╛ рд╣реИред

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

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрджрд┐ рдбреИрди рдиреЗ Redux 2.0 рдХреЛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рддреЛ рдореИрдВ рдЙрд╕рдХреЗ рдКрдкрд░ рднреА рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реВрдВрдЧрд╛!

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

рд╣рдо рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдРрдк рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ ред рдЖрд░ рдПрд▓рд┐рдпрдмрд▓ рдП рдИ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдбреА рдПрд▓реАрд╡реЗрдб рдпреВ рдирд┐рдлрд╛рдЗрдб рдИ рдПрдХреНрд╕ рдЯреЗрдиреНрд╕рд┐рдмрд▓: рд╣рд╛рд░реНрдЯ:

рдХреЛрдИ рднреА рдЧреНрд▓реЛрдмрд▓реНрд╕ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рднреА рдХреЛ рдПрдХ рдЪрд╛рд╣рд┐рдП: tm:

рдХреГрдкрдпрд╛, рдЕрднреА рдХреЗ рд░реВрдк рдореЗрдВ redux рдХреЛ рд╕рд░рд▓ рд░рдЦреЗрдВред рдпрд╣ рдкреИрдЯрд░реНрди рд╣реИред рдХреБрдХрдмреБрдХ рд╣рдореЗрд╢рд╛ рд▓рдЧрднрдЧ :100 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЙрдареЗрдЧреА:

@markerikson рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛? рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЕрджреНрднреБрдд рд╡рд┐рдЪрд╛рд░ рдЖрдП рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ 48 рдШрдВрдЯреЗ рд╣реБрдП рд╣реИрдВ

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

рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рд╛рджреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рддреЛ Redux рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

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

рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣ рд╕рдм Redux рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ (рдореИрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ HTTP рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛)ред I/O рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ Redux рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореЗрд░реЗ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рд░рдЦрддрд╛ рд╣реИред рдЯрд╛рдЗрдк рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╣рдореЗрд╢рд╛ store.dispatch(actionObject) ред рдХреЛрдИ рдкреНрд░реЗрд╖рдг рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реЛрдЧреА)ред

@tannerlinsley : рд╣рд╛рдБ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдУред

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

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

рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рд╛рджреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рддреЛ Redux рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдореИрдВ рдпрд╣реА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ!

  • рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░рдЦреЗрдВ
  • рдЖрдк рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ тАФ рдЬреИрд╕реЗ рджреГрд╢реНрдпред рдЗрд╕реЗ рд╕рдорд░реНрдкрд┐рдд рд░реЗрдбреНрдпреВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВ - рдлрд┐рд░ рдЖрдкрдХреЛ reselect рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ред
  • рдХреНрд░рд┐рдпрд╛рдПрдБ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдЖрд╕рд╛рди рд▓рдЧ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ componentDidMount рд╣реБрдХ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдКрдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

FWIW, рдореИрдВ D3.js (рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ) рдХреЗ рд╕рд╛рде Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг d3-рдШрдЯрдХ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ рд░реЗрдбрдХреНрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдпрд╛рдж рдЖрддреА рд╣реИ connect ред @gaearon рдХреА рдЙрдкрд░реЛрдХреНрдд рд░реВрдкрд░реЗрдЦрд╛/рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореБрдЭреЗ рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, mapStateToProps рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛"ред

рдЖрдк рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ тАФ рдЬреИрд╕реЗ рджреГрд╢реНрдпред рдЗрд╕реЗ рд╕рдорд░реНрдкрд┐рдд рд░реЗрдбреНрдпреВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВ - рдлрд┐рд░ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ред

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

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

@stefensuhat рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджрдо рдкрд░ Redux рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рддреЛ рдореИрдВрдиреЗ async рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдорд┐рд╕ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЖрдк рдЗрд╕реЗ https://github.com/iddan/delux рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

@gaearon рдЖрдкрдХреА рд╕реВрдЪреА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВ! рд╣рдо рдЬрд┐рд╕ рд╕рдВрдЧрдарди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ 90% рд╕реВрдЪреА рдХреЗ рдмрд╛рдж рд╣рдо рдПрдХ рд░реЗрдбрдХреНрд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ рднреА, рдмрддрдЦ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП)ред рдпрд╣ рдЗрд╕ рд╕рдордп рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рд▓реАрдЬрд╝ рд╣реИ, рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ-рддреИрдпрд╛рд░ред

рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛!

@markerikson @tannerlinsley

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

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

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

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

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

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

@Phoenixmatrix рд╣рд╛рдБ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ redux рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ

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

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

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

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

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

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

рдЬрдм рд╣рдо рдлреНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ?

  • рд╣рдо рдПрдХ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рджрд╕реНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ
  • рд╡рд╣ рд╕рджрд╕реНрдп рдХреЗрд╡рд▓ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд░рдЦрддрд╛ рд╣реИ
  • рдЙрд╕ рд╕рджрд╕реНрдп рдХреЗ рдкрд╛рд╕ рдХрд╛рдлреА рд╕реАрдорд┐рдд рдХреНрд╖рдорддрд╛рдПрдВ рд╣реИрдВ (рднрдВрдбрд╛рд░рдг, рдмреИрдВрдбрд╡рд┐рдбреНрде, рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рд░рддрд╛...)

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

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

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

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

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

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

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

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

рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ, redux-starter рдпрд╛ рдХреБрдЫ рдФрд░ред рд╡рд╣ рдкреИрдХреЗрдЬ redux-actions , redux-thunk , рдФрд░ redux-logger рдФрд░ рд╢рд╛рдпрдж рдПрдХ рд╡рд╛рджрд╛-рдЖрдзрд╛рд░рд┐рдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ function createReduxStore({reducers, middleware}) {} рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ ( рдкрд╣рд▓реЗ @Phoenixmatrix рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░)ред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рднреА рдирд╣реАрдВ рдЙрдард╛рдиреА рдЪрд╛рд╣рд┐рдП?

createReduxStore() рдлрд╝рдВрдХреНрд╢рди applyMiddleware рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рд╣реЙрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Redux DevTools рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рдиреА-рдореЗрдХ" рдирдореВрдирд╛ рдРрдк рдореЗрдВ ember-redux рдпрд╛ configureStore рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдЯреЛрд░ рд╕реЗрд╡рд╛ рд╕реЗрдЯрдЕрдк рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

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

рд╣рд╛рдБ, рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ (рдареАрдХ рд╣реИ, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдФрд░ рд╡рд╛рджрд╛ рдЖрдзрд╛рд░рд┐рдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдЙрд╕ рдкрд░ рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдордЬрд╛ рдХрд░рдиреЗ рджреВрдВрдЧрд╛)ред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдмрд╕ createStarterStore(reducer)ред

рд╢рд╛рдпрдж CombReducer рдХреЛ рднреА рдмрджрд▓реЗрдВ, рддрд╛рдХрд┐ рдЖрдк рдмрд╕ рдпрд╣ рдХрд░ рд╕рдХреЗрдВ:

const store = createStarterStore({
   foo,
   bar,
   baz
});

рдЬрд╣рд╛рдВ рдлреВ рдмрд╛рд░ рдмрд╛рдЬ рд░реЗрдбреНрдпреВрд╕рд░ рд╣реИрдВред

рдбреНрд░реЗрдЯред рдмрд╕ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ "рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд░реВрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рдПрдЪрдПрдордЖрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ" рд╢рд╛рдпрдж рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рднрд▓реЗ рд╣реА рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рд░реВрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреА рд╣реЛ, рдПрдХ рдпрд╛ рджреЛрдиреЛрдВ module.hot.accept() API рдФрд░ require(path) рдкреБрди: рдЖрдпрд╛рдд рдЪрд░рдг рдРрд╕реЗ рдкрде рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп рд╣реЛрдВ рдФрд░ рдЪрд░ рдирд╣реАрдВред (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ... рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред) рдУрд╣, рдареАрдХ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рд╛рдБ, createStarterStore() рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдпрд╛ рд╕реНрд▓рд╛рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

@slorber рдореИрдВ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

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

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкрд░ рдирд╣реАрдВред рдХреБрдЫ рд▓реЛрдЧ Redux рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдирд╛ред рдХреБрдЫ рд╕рд░рд▓ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рд░рд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдмрдЪрд╛рддрд╛ рд╣реИред

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

рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЪрд░реНрдЪрд╛ред рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рдПрдХ redux рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рд╕реЗ:

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

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

рдпрд╣ рдЕрдВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж рд╡рд░реНрддрдорд╛рди рд░реЗрдбрдХреНрд╕ redux-core рдЬреИрд╕рд╛ рдкреИрдХреЗрдЬ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ redux рдЦреБрдж рд╣реА рдПрдмреНрд╕рдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдРрдкреНрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдмреЗрд╢рдХ, рд░реЗрдбрдХреНрд╕-рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ redux (рдЬреИрд╕реЗ рдЕрдкреЛрд▓реЛ, рдпрд╛ рд╕рд╛рдЧрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ?) рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ...

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдирд╛:

рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдореЗрдВ рдореМрдЬреВрджрд╛ Redux рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ :) рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реБрдзрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХреБрдЫ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ redux рдкреИрдХреЗрдЬ рдпрдерд╛рд╡рдд рд░рд╣реЗрдЧрд╛ред

redux-starter рдкреИрдХреЗрдЬ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╛ "рдврд╛рдВрдЪрд╛"-рд╡рд╛рдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреИрди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдЬреИрд╕рд╛ рдХреБрдЫ рднреА, рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рд╣реЛрдЧрд╛ рдЬреЛ redux рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

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

рдЖрдк Delux рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрд░ (jk) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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

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

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

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

рдкреБрди: рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛, рд░рд╛рдп рдФрд░ рдЕрдореВрд░реНрддрддрд╛:

рдЕрдЬрд╛рдХреНрд╕ рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирдП рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рдлрдВрд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡реЗ рдердВрдХреНрд╕, рд╕рд╛рдЧрд╛ рдпрд╛ рдорд╣рд╛рдХрд╛рд╡реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦ рд░рд╣реЗ рд╣реЛрдВред рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд╡рд╣ рд╣реИ рдХреНрд░рд┐рдпрд╛рдПрдБ рдмрдирд╛рдирд╛ - рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреНрд▓рдХреНрд╕ рд╕реНрдЯреИрдВрдбрд░реНрдб рдПрдХреНрд╢рди рд╕реНрдкреЗрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИред рдЗрд╕ рд╕реЛрдЪ рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╢реНрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ - рдлреНрд▓рдХреНрд╕ рд╕реНрдЯреИрдВрдбрд░реНрдб рдЕрдЬрд╛рдХреНрд╕ рдПрдХреНрд╢рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

function fetchPosts(page) {
  return {
    type: 'FETCH_POSTS_REQUEST',
    // Ajax request setup
    ajax: {
      url: `/api/posts`,
      method: 'GET',
      data: { page },

      // Optional ajax meta attributes
      meta: {
        // Amount of time to debounce the execution of the request
        debounce: 400,
        // Amount of times to retry the request on failure
        retry: 2,
        // Amount of time before timing out
        timeout: 10000,  
        // The action type that cancels the request
        cancelType: 'CANCEL_FETCH_POSTS',
        // Strategy when multiple FETCH_POSTS_REQUESTs are in flight
        resolve: 'LATEST'
      }
    }
  };  
}

рдЕрдЬрд╛рдХреНрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ ajax рдХреБрдВрдЬреА рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛)ред

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

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

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

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

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ - рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЕрдореВрд░реНрдд рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп Redux рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ - рдХреЛрдИ рд╕реМрджрд╛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ? @markerikson @gaearon

рдкреВрд░реНрд╡ рдХрд▓рд╛: redux-axios-middleware

рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВред

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

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

рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ Redux рдкрд░ рд╣реА рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдЧрддрд┐рд╢реАрд▓, рд╡рд░реНрдХрд┐рдВрдЧ-рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рддрд░реАрдХреЗ рдХреА рдХрдореА рдкрд░ рджреЗрдЦрддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ create-react-app рд╕рдорд╛рдзрд╛рди рдерд╛ред

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

рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╡рд╣ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдзрд╛рдЧрд╛ рд╣реИред

@markerikson рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ redux-starter рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

_рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдХреВрд▓рд░ рдирд╛рдо рдкрд╕рдВрдж рдЖрдПрдЧрд╛_ :stuck_out_tongue:

рдХрдИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдмрд╣реБрдд рд╣реА рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рджреЗрдЦрддрд╛ рд╣реВрдВред

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

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

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

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

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

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

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

рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрд▓реНрдо рдХреЛрдб рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ Redux рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рдЕрднреА рднреА рдореЗрд░рд╛ рджрд┐рд▓ рдзрдбрд╝рдХ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдБрдЧрд╛:

рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдПрдХреНрд╢рди рдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдХреНрд░рд┐рдпрд╛рдПрдБ.рдЬреЗрдПрд╕

export function increase() {}

reducer.js

import { increase } from './actions.js';
export default handleActions({
    [increase]: (state) => state + 1
}, 0);

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

рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

async function a() {

}
async function b() {
}
store.dispatch(a());
store.dispatch(b()); // b() will be dispatched after a() resolves

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

рд░реЗрдбрдХреНрд╕ === рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ

https://github.com/Emilios1995/redux-create-module

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

рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ:

  • рдПрдХ "рдкреВрд░реНрдг-рд╕реЗрд╡рд╛" рд░реЗрдбрдХреНрд╕-рдЖрдзрд╛рд░рд┐рдд рдврд╛рдВрдЪрд╛
  • рд░реЗрдбрдХреНрд╕ рдХреЛрд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдВ

рдореИрдВ @markerikson рд╕реЗ рд╕рд╣рдордд рд░реЗрдбрдХреНрд╕ рдХреЛрд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдврд╛рдВрдЪрд╛ рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд░реЗрдбрдХреНрд╕-рдердВрдХ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдХреНрдпреЛрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рдХреЛрд░ рдореЗрдВ рдирдП "рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ" рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдФрд░ рдорд┐рд╕рд╛рд▓ рджреЛрдиреЛрдВ рд╣реИрдВред

Redux рдХрд╛ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реИ: createStore , applyMiddleware , combineReducers , bindActionCreators , рдФрд░ compose ред рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдп рд╣реИрдВред Redux рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ createStore рд╕рдЦреНрддреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХреЛрд░ рдореЗрдВ рдХреНрдпреЛрдВ рд╣реИ?

  • applyMiddleware рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ applyMiddleware рд░реЗрдбрдХреНрд╕ рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░ _рдЗрдВрдЯрд░рдлреЗрд╕_ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ applyMiddleware рдореЗрдВ рддреБрд▓рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

  • combineReducers рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд░реЗрдбреНрдпреВрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдкреИрдЯрд░реНрди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд▓реЗрдХрд┐рди redux core рдореЗрдВ рдЗрд╕рдХреА рдореМрдЬреВрджрдЧреА рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдо рдирд╣реАрдВ рдмрд▓реНрдХрд┐ _ubiquitous_ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдиреЙрдирдЯреНрд░рд┐рд╡рд┐рдЕрд▓ рд░реЗрдбрдХреНрд╕ рдРрдк рд░реВрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП combineReducers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВрдХрд┐ combineReducers Redux рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд░реВрдк рд╣реИ, рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд░реВрдк рдорд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрдж рд╣реИред

  • bindActionCreators рдкреНрд░реЗрд╖рдг рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдкрд░реАрдд рд░реВрдк рд╕реЗ, bindActionCreators рднреА рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП Redux рдХреА рдХреБрдЫ рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ bindActionCreators рдХрд╛ рдорд╛рддреНрд░ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣реА рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрдм рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ (рдЬреЛ bindActionCreators рджреНрд╡рд╛рд░рд╛ "рдЕрдиреБрдореЛрджрд┐рдд" рд╣реИрдВ) рдмрдирд╛рдо рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ (рдЬреЛ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдордХрдХреНрд╖ рдХреЛрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ) рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ react-redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рдХреЛрдбрдмреЗрд╕ рджреЗрдЦреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ mapStateToProps рд╣рдореЗрд╢рд╛ "bespoke" рдЪрдпрдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди mapDispatchToProps рд╣рдореЗрд╢рд╛ рдкреВрд░реНрд╡-рд▓рд┐рдЦрд┐рдд рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдк рд╣реЛрддрд╛ рд╣реИред

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

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

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

@ рдЖрдзреБрдирд┐рдХрд╕реЗрд░рдл : рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде

рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдордиреЗ рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЗрддрд┐рд╣рд╛рд╕ (рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдж рддрд╛рдУ рдСрдлрд╝ рд░реЗрдбрдХреНрд╕, рднрд╛рдЧ 1 - рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЗрд░рд╛рджреЗ рдХреЗ рд▓рд┐рдП рд╢реЛрдз рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, redux-thunk рдерд╛ рдореВрд▓ рд░реВрдк рд╕реЗ Redux рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдФрд░ react-redux рдХреЛ рдХреЗрд╡рд▓ рдмрд╛рдж рдореЗрдВ рд╣реА рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

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

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

рдЖрдкрдХреЗ рдкрд┐рдЫрд▓реЗ рддреАрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░:

  • рдореИрдВ _рдЕрдиреБрдорд╛рди_ рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ "рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХрд╛ рд╕рд░рд▓реАрдХрд░рдг" рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдиреНрдпрд╛рдп рдорд┐рд▓рддрд╛ рд╣реИред рдмрд▓реНрдХрд┐, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреЛрд░ рдмрдврд╝рд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЬрд╣рд╛рдБ рддрдХ рдЕрдиреНрдп рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░-рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдп: рдбреИрди рдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ Redux рдХреЛрд░ рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд╣ рдЕрднреА рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреЛрд░ рдмрдврд╝рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ "рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА" рдкреАрдЖрд░ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЦреБрд▓реЗ рдмреИрдареЗ рд╣реИрдВ: #1706 рдореЗрдВ @jimbolla рдХрд╛ рд╕рдВрд╕реНрдХрд░рдгред рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЬрд┐рдо рдиреЗ рд╕рднреА рдЬреНрдЮрд╛рдд рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рддрд╛рдХрд┐ рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╕рдореБрджрд╛рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рдо рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдерд╛ред рддреЛ, рдпрд╣ рдПрдХ рджрд┐рд╢рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдЧреЗ рдЦреЛрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рд░реЗрдбреНрдпреВрд╕рд░ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдЕрдиреНрдп рдкреИрдЯрд░реНрди рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо "рдЖрд╢реНрд░рд┐рдд" рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯ рдкрд░, рд▓рдВрдмреЗ рд╕рдордп рддрдХ, рдбреИрди рдиреЗ рдХрд┐рд╕реА рднреА рдкреАрдЖрд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЛ combineReducers рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рдерд╛ (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ _lot_ рд░рд╣рд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ # 1768 рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреА рдЧрдИ рдЬрдмрдХрд┐ред рд╡рд╣ рдкреАрдЖрд░ рднреА рдардк рд╣реЛ рдЧрдпрд╛ рд╣реИред
  • рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╕реАрдзреЗ рд░рд╛рдЬреНрдп рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд╛рдорд┐рдд рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрдВ mapState рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ-рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдкреАрдЖрд░ рднреА рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рд░рд┐рд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ createStructuredSelector рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЬреИрд╕рд╛ рдХрд┐ рдЧреЗрд░реЙрди рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛, (рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ ... рд╢рд╛рдпрдж рд╕реНрд▓реИрдХ) рд╣рдо рдлреНрд▓рдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдЖ рдХреА рддрд░рд╣ рдмрдирдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдореБрджрд╛рдп рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреЛрдЬрдирд╛ "рдзрдиреНрдп" рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд╣реИ, рд╕рдВрднрд╡рддрдГ рдПрдХ reduxjs GitHub рд╕рдВрдЧрдарди рдХреЗ рддрд╣рддред

рдкрд╣рд▓реЗ рдЕрдк-рдереНрд░реЗрдб, рдореИрдВрдиреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдЖрд╕рд╛рди рд░реЗрдбрдХреНрд╕ рд╕реЗрдЯрдЕрдк" рдЕрдореВрд░реНрдд lib, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо "рдзрдиреНрдп" рдРрдбрдСрди рдХреА рд╕реВрдЪреА, рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧреА рдЬреЛ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ? (рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдиреЗ рднреА рдЗрд╕ рд╕реВрддреНрд░ рдХреА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред) рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╛ рд╡рд┐рдЪрд╛рд░?

рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдореБрджрд╛рдп рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреЛрдЬрдирд╛ "рдзрдиреНрдп" рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд╣реИ, рд╕рдВрднрд╡рддрдГ рдПрдХ reduxjs GitHub рд╕рдВрдЧрдарди рдХреЗ рддрд╣рддред

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рднреА рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдПрдХ рдХрджрдо рдЖрдЧреЗ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛: рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди redux рдкреИрдХреЗрдЬ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ @redux/core , рдзрдиреНрдп рд░реАрд╕реЗрд▓реЗрдХреНрдЯ рдФрд░ рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд░реЗрдкреЛ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ redux рдкреИрдХреЗрдЬ рд╕реНрд╡рдпрдВ рдЗрди рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рд╣реА рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред

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

рдореИрдкрд╕реНрдЯреЗрдЯ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдПрдХреНрдЯ-рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдкреАрдЖрд░ рднреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рд░рд┐рд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ createStructuredSelector рд╕рд╛рде рдПрдХ рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдХреБрдЫ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдФрд░ рд╣рд░ рд▓реЙрд╢ рдлрдВрдХреНрд╢рди рдЕрдкрдиреА _a la carte_ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред import { groupBy } from "lodash" рд╕реЗ рдЕрдзрд┐рдХ import groupBy from "group-by" import { groupBy } from "lodash" рдХрд╛ рдХреЛрдИ _functional_ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЯреНрд░реА-рд╣рд┐рд▓рд┐рдВрдЧ рд╕реЗ рдХреНрдпреЛрдВ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдореИрдВ рдмрд╕ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреА рдЪреАрдЬреЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

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

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдкреАрдЯ-рдкреАрдЯ рдХрд░ рдорд╛рд░ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛: https://github.com/reactjs/redux/issues/351

рдУрд╣, рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА, рдзрдиреНрдпрд╡рд╛рдж! :+1:

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

рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдВ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдореБрд╣рд╛рд╡рд░реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдПрдкреАрдЖрдИ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ

  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдирд╛ рд╕реНрдЯреНрд░реАрдо
  • Event Stream рдореЗрдВ рд╕рдорд░реНрдерд┐рдд Events рдХрд╛ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЗрдЯ рд╣реИ
  • рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИ
  • рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдкреАрдЖрдИ

import { createEventStream, createProjection } from 'redux';

// Initialize the event stream separately from the store.  This becomes the one
// true source of truth for your application.
const eventStream = createEventStream({
  // Commands are the only thing that we want to couple to the eventStream.  The 
  // set of events which may end up in an eventStream should be easy to predict.
  //
  // A definition like this supports static analysis inference well for 
  // consumers that can leverage it.
  increment: () => ({ type: 'INCREMENT' }),
  decrement: () => ({ type: 'DECREMENT' }),
});

// Multiple stores with disjoint or overlapping data can be used to consume the 
// same event stream.
const store = createProjection(eventStream, reducer, init);
const adminStore = createProjection(eventStream, adminReducer, init);

// We don't need a jargon term ("Middleware"), or a dedicated hook to handle 
// async anymore.  We just register more subscribers to the eventStream.
eventStream.subscribe(myCustomMiddleWare);
eventStream.subscribe(sendEventsToAnalytics);
eventStream.subscribe(logEventsForPlayback);

// Calls to commands can be wrapped with React Providers or container components 
// in the same way that Redux currently does.  They can also be called directly.
eventStream.increment();

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

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

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

рдмреЗрд╢рдХ, рдЖрдк рднреА рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЦрд╛рдИ рдХрд╛рд░рдХ рд╣реИ, рдФрд░ рд╕рдВрдкреВрд░реНрдг рдПрдкреАрдЖрдИ рд╕рддрд╣ рдФрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдмрджрд▓рдирд╛ рдЗрд╕ рд╕рдордп рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЕрдм рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдФрд░ Redux рд╕рдореБрджрд╛рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реАрдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред

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

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ! рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдбрдВрдк рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВрдЧреЗред

рд╕рд╛рдЗрдб рдиреЛрдЯ: рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо-рдЬреИрд╕реА рд░реИрдкрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдКрдкрд░ рд╕реБрдЭрд╛рдИ рдЧрдИ рд╕рддрд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ!

https://github.com/ajhyndman/redux-event-stream

@ajhyndman рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реИрдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ

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

рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдХрдорд╛рд▓ рд╣реИ! рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ redux рд░реЗрдкреЛ рдХреЗ рд░реАрдбрдореЗ рдкрд░ рдзрдиреНрдпрд╡рд╛рдж рдХреА рд╕реВрдЪреА рдореЗрдВ рджреВрд╕рд░рд╛ рдЖрдЗрдЯрдо рднреА рд╣реИред

рдЬрд╝рд░рд╛ рд╕реБрдирд┐рдП рд╕рднреА!

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

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХреЗрдЖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

screen shot 2017-08-06 at 13 10 03

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

рдХреЗрдЖ рдСрдкрд░реЗрд╢рди рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдЖрдк рдЗрд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рдКрдкрд░ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдЬрд╣рд╛рдВ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрдирдкреБрдЯ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЗ рдкреНрд░реЙрдкреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

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

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

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

import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { kea } from 'kea'

@kea({
  actions: () => ({
    increment: (amount) => ({ amount }),
    decrement: (amount) => ({ amount })
  }),

  reducers: ({ actions }) => ({
    counter: [0, PropTypes.number, {
      [actions.increment]: (state, payload) => state + payload.amount,
      [actions.decrement]: (state, payload) => state - payload.amount
    }]
  }),

  selectors: ({ selectors }) => ({
    doubleCounter: [
      () => [selectors.counter],
      (counter) => counter * 2,
      PropTypes.number
    ]
  })
})
export default class Counter extends Component {
  render () {
    const { counter, doubleCounter } = this.props
    const { increment, decrement } = this.actions

    return (
      <div className='kea-counter'>
        Count: {counter}<br />
        Doublecount: {doubleCounter}<br />
        <button onClick={() => increment(1)}>Increment</button>
        <button onClick={() => decrement(1)}>Decrement</button>
      </div>
    )
  }
}

рдпрджрд┐ рдЖрдкрдХрд╛ рдРрдк рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ increment рдФрд░ decrement рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ counter рдкреНрд░реЛрдк рддрдХ

// counter-logic.js
import PropTypes from 'prop-types'
import { kea } from 'kea'

export default kea({
  actions: () => ({
    increment: (amount) => ({ amount }),
    decrement: (amount) => ({ amount })
  }),

  reducers: ({ actions }) => ({
    counter: [0, PropTypes.number, {
      [actions.increment]: (state, payload) => state + payload.amount,
      [actions.decrement]: (state, payload) => state - payload.amount
    }]
  }),

  selectors: ({ selectors }) => ({
    doubleCounter: [
      () => [selectors.counter],
      (counter) => counter * 2,
      PropTypes.number
    ]
  })
})
// index.js
import React, { Component } from 'react'
import { connect } from 'kea'

import counterLogic from './counter-logic'

@connect({
  actions: [
    counterLogic, [
      'increment',
      'decrement'
    ]
  ],
  props: [
    counterLogic, [
      'counter',
      'doubleCounter'
    ]
  ]
})
export default class Counter extends Component {
  render () {
    const { counter, doubleCounter } = this.props
    const { increment, decrement } = this.actions

    return (
      <div className='kea-counter'>
        Count: {counter}<br />
        Doublecount: {doubleCounter}<br />
        <button onClick={() => increment(1)}>Increment</button>
        <button onClick={() => decrement(1)}>Decrement</button>
      </div>
    )
  }
}

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ redux-saga рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝реЗрдВред

рдХреЗрдП рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдм рддрдХ рдЕрддреНрдпрдзрд┐рдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░рд╣реА рд╣реИ, рдПрдХ рдореБрджреНрджреЗ рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░рддреЗ рд╣реБрдП: "рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЗрдПрдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд░реЗрдбрдХреНрд╕ рджреБрдирд┐рдпрд╛ рдХреЛ рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП! ЁЯСН" :)

рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣рд╛рдБ рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! :)

рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ! 'increment' рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рджреВ рдХреЗ рддрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВ

рдХреНрдпрд╛ рдпрд╣ рдЪрд░реНрдЪрд╛ рдХрд╣реАрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реА? рдХреНрдпрд╛ Kea рд╕рдмрд╕реЗ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

@lucfranken : рдирд╣реАрдВ, рдЪрд░реНрдЪрд╛

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

рдореЗрд░реА рдЯреЛрдкреА рдпрд╣рд╛рдБ рд░рд┐рдВрдЧ рдореЗрдВ рдлреЗрдВрдХ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ: https://github.com/HenrikJoreteg/redux-bundler

рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рд░рд▓реАрдХрд░рдг рдФрд░ рдХрдореА рд╣реИред

рдЗрд╕ рддрд░рд╣ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА:
https://github.com/anish000kumar/redux-box
image

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

1_327nnvo3cuaqc-dsqpoq7w

рд░реЗрдбрдХреНрд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣рд╛рдВ рд╣реИ
image

https://github.com/zhDmitry/restate

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

https://twitter.com/acemarke/status/969040835508604929

рдиреЗрдХреНрд░реЛ-рдереНрд░реЗрдб рдХреА рд╡рд╛рдкрд╕реА!

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

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