Redux: рдПрдЧрд╣реЗрдб рдкрд░ Redux рд╕реНрдХреНрд░реАрдирдХрд╛рд╕реНрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдирд╡ре░ 2015  ┬╖  69рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: reduxjs/redux

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

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

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

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

@markerikson рдкреВрдЫрддрд╛рдЫ рдХреА рдЗрд╕ рдкрдВрдХреНрддрд┐ рдкрд░ рдореЗрд░реЗ рд╕рд╛рде рдЕрд╕рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рддрд░реНрдХрдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдЬреЛрдЦрд┐рдо рдкрд░, рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ "рдРрдк рд╕реНрддрд░" рдмрдирд╛рдо "рдпреВрдЖрдИ рд╕реНрддрд░" рд╣реИред

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

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

рдЗрд╕рд╕реЗ рдпреВрдЖрдИ рдкрд░рдд рдкрд░ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ "рд╣реИрдВрдбрд▓рд░" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреЗрдЬрддрд╛ рд╣реИ (рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдПрд╕рд┐рдВрдХ рдХреЙрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ _then_ рдПрдХ рд╕рд╛рджрд╛ рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ --- рдпреВрдЖрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо, рдпрд╣ _can_ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реЛ)

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

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

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

рдореИрдВ рдЪрд░реНрдЪрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реВрдВред

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

:+1:

  1. рд╕реНрдерд╛рдиреАрдп рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдо рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐
  2. рдПрдХрд╛рдзрд┐рдХ рд░реЗрдбреНрдпреВрд╕рд░ рдмрдирд╛рдо 1-рдЯреВ-1 рдПрдХреНрд╢рди-рд░реЗрдбреНрдпреВрд╕рд░ рд╕рдВрдмрдВрдз рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ
  3. рдПрдХреНрд╢рди рдЪреЗрди (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрд╕рд┐рдВрдХ рд╡рд╛рд▓реЗ) рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛, рдЬрдм рдкрд╣рд▓реА рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдареАрдХ рдмрд╛рдж рджреВрд╕рд░реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  4. рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреБрдирд░реНрд░рдЪрдирд╛ (рдмреИрдЪрд┐рдВрдЧ рдХреНрд░рд┐рдпрд╛рдПрдБ, рдкреБрди: рдЪрдпрди рдЖрджрд┐) рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рддрдХрдиреАрдХреЗрдВред

:+1:

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

рдЗрд╕ рдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдЬрд╛рдирдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

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

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

рдареАрдХ рд╣реИ, рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рдкреАрдЫреЗ рдЖрдкрдХреА рд╕реЛрдЪ рдХреЛ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ :-)ред

@smashercosmo рдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛: +1:

рдЗрдХрд╛рдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдгред рдЯреАрдбреАрдбреАред

@рдХреЗрдЯрд▓реИрдВрдб рдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛: +1:

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

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

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

рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВ! :)

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

рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИред

@smashercosmo рдХреА рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо 3 рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рднреА рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@wpannell рдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛! рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг/рдЯреАрдбреАрдбреА!

рдЙрдиреНрдирдд рдбреЙрдХреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдирд╛ рднреА рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ?
рдкрд╛рда 5, 11, 12 рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╡рд┐рдЪрд╛рд░ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдбреНрдпреВрд╕рд░ рдХрд╛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВред

...рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИред рдХреНрдпрд╛ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рдмрджрд▓ рдЬрд╛рдПрдЧреА?

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмрдврд╝рд┐рдпрд╛ рд╡реАрдбрд┐рдпреЛред рд░реЗрдбрдХреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рддрд╛рдЬрд╝рд╛ рдерд╛ред
рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╡реАрдбрд┐рдпреЛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреЛ async рдХреНрд░рд┐рдпрд╛ / рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реБрдЭрд╛ рд╕рдХрддрд╛ рд╣реВрдБред
рдРрд╕рд╛ рдордд рд╕реЛрдЪреЛ рдХрд┐ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдХрд╡рд░реЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рд░реЗрдбреНрдпреВрд╕рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдкрд░ рдЬреЛрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ expect s рдХреЛ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред :рдердореНрд╕ рдЕрдк:

рд╢реБрдХреНрд░ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ!

рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ (рдЬреИрд╕реЗ [post._id]: {...post} )ред

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

@raquelxmoss

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

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

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

рдореБрдЭреЗ рдЙрдиреНрдирдд рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рднреА рдЪрд╛рд╣рд┐рдПред

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

рдкреВрд░рд╛ рджреЗрдЦрд╛, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛! рдореИрдВрдиреЗ ES6/7 рд╕рд┐рдВрдЯреИрдХреНрд╕ ( Object.assign -like), рд░рд┐рдПрдХреНрдЯ 0.14 рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХреЛрдВ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЪреАрдЬрд╝реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреАред

рд╢рд╛рдпрдж рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХреЛрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛред

рдФрд░ ES6/7 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛? (рдХреНрдпрд╛ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ?)

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

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

@gaearon рдЙрджрд╛рд╣рд░рдг рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рд╕реЗ рд╣реА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдХ { type: string, payload: Object } рд░реВрдк рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рдореИрдВ рдХрд╛рдЙрдВрдЯрд░ рд╕реВрдЪреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдкреЗрд▓реЛрдб рдХреЛ рдПрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╣реА рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ; { type: string, index: number } ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

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

рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБ рд╣реИред FSA рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ _convention_ рд╣реИред Redux рдореЗрдВ рдХреБрдЫ рднреА рдЗрд╕ рдХрдиреНрд╡реЗрдВрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдпрд╛ рд▓рд╛рдн рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд▓реЛрдЧ рдореВрд▓ Flux рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ payload , source рдмрд╛рд░реЗ рдореЗрдВ рд╣рд░ рддрд░рд╣ рдХреА рдЬрд╛рджреБрдИ рдмрд╛рддреЗрдВ рд╕реЛрдЪрддреЗ рдереЗред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдЗрди рдЪреАрдЬреЛрдВ рдХреА рдирдХрд▓ рдХреА, рдмрд┐рдирд╛ рдпрд╣ рд╕рдордЭреЗ рдХрд┐ рд╡реЗ рдХреНрдпреЛрдВ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдзреНрдпрд╛рди рд╕реЗ рдпрд╣ рдЖрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдлреНрд▓рдХреНрд╕ рдХреЗ рдЬрдЯрд┐рд▓ рдФрд░ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реЛрдиреЗ рдХреА рд╢рд┐рдХрд╛рдпрдд рдХреА, рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд░реНрдмреЛрдЬрд╝ (рд▓реЗрдХрд┐рди рдЧреИрд░-рдЖрд╡рд╢реНрдпрдХ) рднрд╛рдЧреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ред

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

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

@sompylasar

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

рд╕рд╛рде рд╣реА, рдПрдлрдПрд╕рдП рдХрд╛ рдкрд╛рд▓рди рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред { type: 'STUFF', id: 1 } рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ { type: 'STUFF', payload: { id: 1 } } рд╕реЗ рднреА рдмрджрддрд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рд╕реНрд╡рд╛рдж рдФрд░ (рдХрднреА-рдХрднреА) рдЯреВрд▓реАрдВрдЧ рд╕рдореНрдореЗрд▓рди рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ payload рдХрдо рд░рдЦрдиреЗ рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рд╣рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдПрдЧрд╣реЗрдб рдкрд░ рдХреБрдЫ рдореБрдЯреНрдареА рднрд░ рд░реЗрдбрдХреНрд╕ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдкрд╛рда рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ

рд╣рдордиреЗ рдХрд┐рд╕реА рднреА Redux рдкрд╛рда рдХреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдбреИрди рдореЗрдВ рдкрд╣рд▓реА рджрд░рд╛рд░ рдЖрдПред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд╛рдпрдХ, рдФрд░ рдлрд┐рд░ рдХреБрдЫред

"Idiomatic Redux рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ" рдПрдХ рдЕрджреНрднреБрдд рдЙрдиреНрдирдд рдкрд╛рдареНрдпрдХреНрд░рдо рд╣реЛрдЧрд╛

@joelhooks рд╡реЗ рджреЛрдиреЛрдВ рдЕрджреНрднреБрдд рд▓рдЧрддреЗ рд╣реИрдВ!

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

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

рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдбреИрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕реЗ https://github.com/urbanvikingr/todo рджреЗрдЦреЗрдВред

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

Egghead.io рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╕реВрдЪреА:
рдЬреИрд╕реНрдореАрди рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛ / рд░реЗрдбреНрдпреВрд╕рд░ рдкрд░реАрдХреНрд╖рдг
рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд░ рдЧрд╣рд░рд╛ рдЧреЛрддрд╛ рд▓рдЧрд╛рдПрдБ (рдердВрдХ / рд╡рд╛рджреЗ)

рд╕реНрдХреНрд░реАрдирдХрд╛рд╕реНрдЯ Redux рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рдЪрдп рд╣реИред рдореИрдВ рдЬреЛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рд░реВрдЯрд┐рдВрдЧ рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Redux-way рд╣реИ

@grigio рдЖрдк рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/rackt/redux/issues/1145 рд░реВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

@urbanvikingr рдзрдиреНрдпрд╡рд╛рдж, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдпрд╛ред рдкреЛрд▓ рдмрдВрдж рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ #1168 . рд╡реЛрдЯ рджрд┐рдпрд╛ рд╣реЛрддрд╛

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

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

рдореИрдВ рдЕрдВрддрддрдГ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ;-)

@gaearon рдЖрдкрдиреЗ Redux рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдФрд░ рдЖрдкрдХреА рдУрдкрди рд╕реЛрд░реНрд╕ рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЛ рдирдордиред

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

( @jugimaster рдХреЛ рднреА рди рд╕реБрдиреЗрдВ, рд╣рд░ рдХреЛрдИ рдЖрдкрдХреЗ рдЙрдЪреНрдЪрд╛рд░рдг рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ рдФрд░ "рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬрдиреАрддрд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╣реА рдерд╛", рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкрд░рд╡рд╛рд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдЪреНрдЪрд╛рд░рдг рд╣реИред)

@ianstormtaylor
рдпрд╣ рдПрдХ рдЙрдЪреНрдЪрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рд╡реИрд╕реЗ :)

рдореИрдВрдиреЗ рдпрд╛ рддреЛ "рдкрд░рд╡рд╛рд╣" рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡рд┐рдЪрд▓рд┐рдд рдерд╛!

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

рдЕрд░реЗ @gaearon ,

рдЖрдкрдХрд╛ рдкрд╛рдареНрдпрдХреНрд░рдо рдмрд┐рд▓реНрдХреБрд▓ рдкрд╕рдВрдж рдЖрдпрд╛ред рдЕрдЪреНрдЫрд╛ рдХрд╛рдо! рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рдерд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╣рд╛рд▓ рдХреЗ рдПрдЧрд╣реЗрдб рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рддреАрди Redux рдкрд░реАрдХреНрд╖рдг рд╡реАрдбрд┐рдпреЛ рдкрд╛рда рдЬреЛрдбрд╝реЗ рд╣реИрдВ:
https://egghead.io/series/react-testing-cookbook

рдореЗрд░реА рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдЕрджреНрднреБрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░рдХ рд╣реЛрдВрдЧреЗ!

рдареЛрд╕ рдкрд╛рдареНрдпрдХреНрд░рдо!

рди рдХреЗрд╡рд▓ Redux рдЬреНрдЮрд╛рди рдмрд▓реНрдХрд┐ рдЖрдзреБрдирд┐рдХ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░рддрд╛ рд╣реИ! рдРрд╕реЗ рд╣реА рдЕрдЪреНрдЫреЗ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЛ :+1: :tada:

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

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

рдЙрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ examples/todos рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ рдЬреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдХрд╛рдлреА рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

... рдЕрдЪреНрдЫрд╛, рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рддреЛ? рд▓рд┐рдВрдХ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ...

@gaearon рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд╕ рд╡реАрдбрд┐рдпреЛ рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд┐рдпрд╛ред рдХреЛрдб рд╡рд╣реАрдВ рд╣реИ :)... рд╡реАрдбрд┐рдпреЛ рджреЗрдЦреЗ, рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реАрджреА, рджреВрд╕рд░реЛрдВ рдХреЛ рджреЗрдЦрд╛... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд┐рдП рдЧрдП рд░реЗрдбрдХреНрд╕ рд╡реАрдбрд┐рдпреЛ рдкрд░ рд╡рд╛рдкрд╕ рдЪрд▓реЗ рдЧрдПред рдЪреАрдпрд░реНрд╕ред

рд╡реИрд╕реЗ, рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдХрд┐ рдЯреЗрдк рдЧрд▓рдд рд╣реИрдВред
рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рднреЗрдЬреЗрдВ: https://github.com/eggheadio/egghead-redux-transscripts

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

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

рдореИрдВ рдЬрд┐рд╕ рдРрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдЯреЗрдмрд▓ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдФрд░ рдкреЗрдЬрд┐рдиреЗрдЯ рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдореБрдЭреЗ рдпрд╣ рддрдп рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рдХрдм рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрдм рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ USERS_SORT_TABLE рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ SORT_TABLE рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдЫ рд░рд╛рдЬреНрдп "рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдЯреЛрд░ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЯреВрдбреВ рд╕реНрдЯреЛрд░ рдкрд░ SORT_TABLE рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

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

рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ:

/* actions.js */
// ...
export const USER_MOVE_COLUMN = 'USER_MOVE_COLUMN'

export function userMoveColumn (columnIndex, moveToIndex) {
  return {
    type: USER_MOVE_COLUMN,
    columnIndex,
    moveToIndex
  }
}

export const DATA_TABLE_MOVE_COLUMN = 'DATA_TABLE_MOVE_COLUMN'
// ...

/* reducers.js */
// ...
export default function user (state=userInitialState, action) {
  switch (action.type) {
    // ...
    case USER_MOVE_COLUMN:
      return dataTable(state, assign(
        action,
        {type: DATA_TABLE_MOVE_COLUMN}
      ))
    // ...
    default:
      return state
  }
}
// ...
export default function dataTable (
  state=dataTableInitialState,
  action,
  key='dataTable')
{
  switch (action.type) {
    // ...
    case DATA_TABLE_MOVE_COLUMN:
      return {
        ...state,
        [key]: {
          ...state[key],
          columns: move(
            state[key].columns, action.columnIndex, action.moveToIndex
          )
        }
      }
    // ...
    default:
      return state
  }
}

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

рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЪрдпрди рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдкрд╣рд▓рд╛ Redux рдХреЛрд░реНрд╕ рдореБрдЭреЗ рдЦрддрд░рдирд╛рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдерд╛ред рдЕрдм рдореИрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред :)

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

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

рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)

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

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

@granteagon рдХреНрдпрд╛ рдпрд╣ рдпреБрдЧрд▓ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ

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

@gaearon @markerikson рдпрд╣ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпреБрдЧрд▓

@granteagon @gaearon

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

const counterReducersA = {
  // this counter increments by 1 each time
  increment: (state, action) => state + 1
}

const counterReducersB = {
  // this counter increments by 2 each time
  increment: (state, action) => state + 2
}

const counterA = reduxr(counterReducersA, 0);
const counterB = reduxr(counterReducersB, 0);

const rootReducer = combineReducers({
  counterA: counterA.reducer,
  counterB: counterB.reducer
});

store.dispatch(counterA.action.increment());  // increments both counters

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

рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ рдХрд┐ рдпреБрдЧреНрдорди, @gaearon рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

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

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

@battaile : рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИ :) рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдмрд┐рдирд╛, рдХрд┐рд╕реА рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХрддрд╛ рдХреЛ Redux рдХреЗ рдмрд╛рд╣рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреА UI рдкрд░рдд рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ)ред рдЬрдм рднреА рдЖрдк store.dispatch рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реАрдзреЗ рд░реЗрдбреНрдпреВрд╕рд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рдПрдЧреА, рдЧреЛ рдкрд╛рд╕ рди рдХрд░реЗрдВ, $200 рдПрдХрддреНрд░ рди рдХрд░реЗрдВ, AJAX рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдЯреЙрдк рди рдмрдирд╛рдПрдВред

рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде dispatch рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП applyMiddleware рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреЛрд░ рдХреЗ dispatch рдлрд╝рдВрдХреНрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ "рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди" рдХрд╛ рд╕рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред . рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдмрдЪрд╛рд╡ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдмрд╛рд╣рд░ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ Redux рдкреНрд░рд╡рд╛рд╣ рдХреЗ _inside_ рдЬреЛ рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рд╛рдорд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИ :)

рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЭреВрдард╛ рдерд╛, рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдкрдЯрд░реА рд╕реЗ рдЙрддрд╛рд░ рджрд┐рдпрд╛ :)

рдореИрдВ рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛:

const mapDispatchToProps = (dispatch) => ({
  onclick(searchTerm) {
    dispatch(actions.requestOrders(searchTerm));

    return fetch('http://localhost:49984/Order/Search?search=' + searchTerm)
      .then(response => response.json()).then(response => {
        dispatch(actions.receiveOrders(searchTerm, response));
      })
      .catch((err) => {
        dispatch(actions.receiveOrdersError('An error occurred during search: ' + err.message));
      });
  },
});

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

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ "рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдмрд┐рдирд╛, Redux рд╕реНрдЯреЛрд░ рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред" рднреНрд░рд╛рдордХ рд╣реИред

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

рд╣рд╛рдБ, рд╡рд╣рд╛рдБ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ async рд╡реНрдпрд╡рд╣рд╛рд░ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдШрдЯрдХ рд╕реНрддрд░ рдкрд░ рдЕрдзрд┐рдХ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдмрдЬрд╛рдп dispatch "рдЕрдВрджрд░" рдХреЗред рдПрдХ рдорд╛рдореВрд▓реА рдЕрдВрддрд░, рд▓реЗрдХрд┐рди рдПрдХ рд╡реИрдзред

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

@markerikson рдмрд╕ рдЙрддреНрд╕реБрдХ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмреАрдЪ рднреЗрдж рд╣реИ?

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ _before_ рдЖрдкрдХрд╛ рдПрд╕рд┐рдВрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдкрдХреЗ рднреЗрдЬреЗ рдЧрдП рдердВрдХ (рдпрд╛ рд╡рд╛рджрд╛, рдЖрджрд┐) рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ _what_ рд╡рд╣ рдорд┐рдбрд▓рд╡реЗрдпрд░ _do_ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдордореНрдо ... рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдареЛрд╕" рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, "рдмрд╛рд╣рд░" рдФрд░ "рдЗрдирд╕реА" рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ _before_ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ dispatch рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ _after_ред рдпрджрд┐ рдпрд╣ "рдмрд╛рд╣рд░" рдФрд░ "рдкрд╣рд▓реЗ" рд╣реИ, рддреЛ рдЖрдкрдХреА рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХрддрд╛ рдФрд░ рддрд░реНрдХ рджреГрд╢реНрдп рдкрд░рдд рд╕реЗ рдЕрдзрд┐рдХ рдмрдВрдзреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛ, рдХреЛрдгреАрдп, рдпрд╛ рдХреБрдЫ рдФрд░ред рдпрджрд┐ рдпрд╣ "рдЕрдВрджрд░" рдФрд░ "рдмрд╛рдж" рд╣реИ, рддреЛ рдЖрдкрдХреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХрддрд╛ рдФрд░ рддрд░реНрдХ рд╕реНрдЯреЛрд░ рд╕реНрддрд░ рдкрд░ рд╣реИ, рдФрд░ _not_ рджреГрд╢реНрдп рдкрд░рдд рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдЬ рдкрд╣рд▓реЗ рд░реЗрдбрд┐рдЯ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛: https://www.reddit.com/r/reactjs/comments/4spbip/has_anone_inserted_a_controllerpresenter_layer/ ред

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

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

@markerikson рдкреВрдЫрддрд╛рдЫ рдХреА рдЗрд╕ рдкрдВрдХреНрддрд┐ рдкрд░ рдореЗрд░реЗ рд╕рд╛рде рдЕрд╕рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рддрд░реНрдХрдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдЬреЛрдЦрд┐рдо рдкрд░, рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ "рдРрдк рд╕реНрддрд░" рдмрдирд╛рдо "рдпреВрдЖрдИ рд╕реНрддрд░" рд╣реИред

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

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

рдЗрд╕рд╕реЗ рдпреВрдЖрдИ рдкрд░рдд рдкрд░ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ "рд╣реИрдВрдбрд▓рд░" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреЗрдЬрддрд╛ рд╣реИ (рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдПрд╕рд┐рдВрдХ рдХреЙрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ _then_ рдПрдХ рд╕рд╛рджрд╛ рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ --- рдпреВрдЖрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо, рдпрд╣ _can_ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реЛ)

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

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

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

рдореИрдВ рдЪрд░реНрдЪрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реВрдВред

рдпрд╣ рдХреЛрд░реНрд╕ рдмрдврд╝рд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рддрд╛рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдиреЛрдЯреНрд╕ рд░реЗрдкреЛ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВ: https://github.com/tayiorbeii/egghead.io_redux_course_notes

рд╕рд╛рде рд╣реА, рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдбреИрди рдкреБрдЯ рдЯреБрдЧреЗрде рджреЗрдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ! https://egghead.io/courses/build-react-applications-with-idiomatic-redux

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

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

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

dmitry-zaets picture dmitry-zaets  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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