Redux: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг (рд╕реАрдЖрд░рдпреВрдбреА, рдЙрдиреНрдирдд рдкреИрдЯрд░реНрди, рдЖрджрд┐ рд╕рд╣рд┐рдд)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдлрд╝рд░ре░ 2016  ┬╖  45рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: reduxjs/redux

рдореВрд▓ рд░реВрдк рд╕реЗ рдбреИрди рдХреЗ рдЯреНрд╡реАрдЯ рд╕реЗ рдкреНрд░реЗрд░рд┐рддред

рдЯреАрдПрд▓; рдбреАрдЖрд░ - рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд░реЗрдбрдХреНрд╕ рдРрдк рдХреЗ рдирд┐рд░реНрдорд╛рдг/рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛/рд╢рд┐рдХреНрд╖рд╛рд╢рд╛рд╕реНрддреНрд░ рдХреЛ рдирд┐рдзрд┐ рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЗрд╕ рд░реЗрдкреЛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдХ Thinkster.io рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рднреА рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рдкрд╛рда рдФрд░ рдХреЛрдб рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛ (рд╣рдо рдХреНрд░рдорд╢рдГ рд╕реАрд╕реА рдФрд░ рдПрдордЖрдИрдЯреА рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ) рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬреНрдЮрд╛рди рдПрдХ рдкреЗрд╡реЙрд▓ рдХреЗ рдкреАрдЫреЗ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

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

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

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

  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг
  • рдорд╛рдирдХреАрдХрд░рдг
  • рдЖрд╢рд╛рд╡рд╛рджреА рдЕрдкрдбреЗрдЯ
  • рд╕реНрдерд╛рдиреАрдп рд╕рдВрдкрд╛рджрди
  • рдЗрдХрд╛рдИ рд╕рдВрдмрдВрдз
  • рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛

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

рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рднреА рд╣реИ рдХреНрдпрд╛?

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

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

  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг
  • рдорд╛рдирдХреАрдХрд░рдг
  • рдЖрд╢рд╛рд╡рд╛рджреА рдЕрдкрдбреЗрдЯ
  • рд╕реНрдерд╛рдиреАрдп рд╕рдВрдкрд╛рджрди
  • рдЗрдХрд╛рдИ рд╕рдВрдмрдВрдз
  • рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛

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

рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рднреА рд╣реИ рдХреНрдпрд╛?

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

@gaearon рд╕рд╛рдордЧреНрд░реА/рдХреЛрдб рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдкреГрд╖реНрда рдкрд░ рдХрд╣реАрдВ рд╡рд╛рдкрд╕ рдПрдХ рд▓рд┐рдВрдХ рдорд╛рдВрдЧреЗрдВрдЧреЗ :) (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ - рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо/рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреА рдмреЗрд╣рддрд░ рд╣реИ)

@sebastiandeutsch рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ + рд░реЗрдбрдХреНрд╕ , рдореЛрдиреЛрдЧреНрд░рд╛рдо рдФрд░ рдПрдХреНрдХреНрд░рд┐рдкреНрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдореИрдиреЗрдЬрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдФрд░ ECIES рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдирд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдпрд░ рдкрд░ рднреЗрдЬреЗ рдмрд┐рдирд╛ рдЙрди рд╕рднреА рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдХрд╛рдлреА рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдпрд╣ https://github.com/rackt/redux/issues/1353#issuecomment -178760036 рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ?

@vkarpov15

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

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

https://github.com/jsforum/jsforum/issues/7

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

@sompylasar рдХреГрдкрдпрд╛ рд░рд┐рдПрдХреНрдЯ Redux рд░реЗрдкреЛ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдореБрдЭреЗ рд╡рд╣рд╛рдВ Redux-рдЬрд╛рдЧрд░реВрдХ рдШрдЯрдХ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдпрд╛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

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

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

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдХрд╕реНрдЯрдо рдпрд╛ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдЧрд╛? рдпрд╛ рд╕рдВрдпреЛрдЬрди?

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

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдордзреНрдпрд╡рд░реНрддреА-рдЙрдиреНрдирдд рджреЗрд╡реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛; рд╢реБрд░реБрдЖрддреА рдЯрдЯреНрд╕ рд╕рдВрддреГрдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛) рдХрдард┐рди рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред

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

@EricSimons рдореБрдЭреЗ рдордзреНрдпрдо рдХреНрд▓реЛрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

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

  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг (рдИрдореЗрд▓/рдкрд╛рд╕ рдФрд░ oAuth, JWT)
  • рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдФрд░ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП CRUD
  • рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
  • рд╕рднреА рдмреНрд▓реЙрдЧреЛрдВ рдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝реАрдб рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреНрд▓реЙрдЧ рдХрд╛ рдлрд╝реАрдб
  • рдЯреИрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ / рд╕рдВрдкрд╛рджрди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЬрд╛рдирдХрд╛рд░реА

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

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

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

// shortened version

import { addArticle } from '../actions'

function doAddArticle(props, handleAdded, values, dispatch) {
  props.addArticle(values)
  .then(handleAdded)
}

class AddArticlePage extends Component {
  handleAdded = () => {
    this.props.pushState(null, '/articles/')
  };

  render() {
    return (
      <div>
        <ArticleForm submit={(values, dispatch) => doAddArticle(this.props, this.handleAdded, values, dispatch)} />
      </div>
    )
  }
}

function mapStateToProps(state) {
  return {}
}

export default connect(mapStateToProps, {
  pushState,
  addArticle
})(AddArticlePage)

  1. рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд╣рд▓ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ "рд╕рд╣реА" рдмрд╛рдд рд╣реИред
  2. рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдирдП рдмрдирд╛рдП рдЧрдП рд▓реЗрдЦ рд╕реЗ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ /articles/{id}/ рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ?
  3. рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореЗрд░рд╛ рдШрдЯрдХ async рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЪрд╛рд╣рддрд╛ рд╣реИ? рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдлреЙрд░реНрдо рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдЖрд░реНрдЯрд┐рдХрд▓рдлреЙрд░реНрдо рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдЖрдпрд╛: рдореИрдВ рдПрдХ рдХреНрд░рд┐рдпрд╛ "addImage" рднреЗрдЬрддрд╛ рд╣реВрдВ рдФрд░ рдЬрдм рдЫрд╡рд┐ рд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИ рддреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ 1) рдпреВрдЖрд░рдПрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджрд┐рдЦрд╛рдПрдВ рдФрд░ 2) рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдлреЙрд░реНрдо рдХреЛ рдпреВрдЖрд░рдПрд▓ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рд▓рдЧрд╛ рдХрд┐ Redux рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдорд┐рд▓реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдЖрдкрдХреЛ рдлреЙрд░реНрдо рдШрдЯрдХ рдореЗрдВ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рд░рд╛рдЬреНрдп/рдЫрд╡рд┐ рдХреЛ рдкреНрд░реЛрдк рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди 1) рдЖрдк рдирдИ рдЬреЛрдбрд╝реА рдЧрдИ рдЫрд╡рд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 2) рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХ рд╕рд╛рде 2 рдЫрд╡рд┐рдпрд╛рдВ рдЕрдкрд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИрдВ, рдХреИрд╕реЗ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╕рд╣реА рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЫрд╡рд┐ URL рдорд┐рд▓рддрд╛ рд╣реИ?

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

@jonathaningram рдХреНрдпрд╛ рдЖрдкрдиреЗ redux-thunk рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рджреЗрдЦрд╛ рд╣реИ? рдЖрдк рдЬреЛ рдКрдкрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рднреАрддрд░ рд╕реЗ рдкреНрд░реЗрд╖рдг рдХрд░рдиреЗ рджреЗрдЧрд╛

@babsonmatt рд╣рд╛рдБ рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВрдиреЗ рдРрдк рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

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

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

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реАрдЖрд░рдпреВрдбреА (рдУрд╡рд░ рдЖрд░рдИрдПрд╕рдЯреА) рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХреА рд╣реИред Marionette/Backbone рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ рдЬрдм рд░рд┐рдПрдХреНрдЯ/рд░реЗрдбрдХреНрд╕ рдкрд░ рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд░рдИрдПрд╕рдЯреА рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред

https://github.com/masylum/resting-ducks

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

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

let routes = <Route path='/' component={Layout}>
  <IndexRoute component={BooksIndex} />
  <Route path='/book/new' component={BooksNew} />
  <Route path='/book/:id' component={BooksShow} loader={BooksLoader} />
  <Route path='/book/:id/edit' component={BooksEdit} loader={BooksLoader} />
</Route>;

BooksLoader рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

  • рдЬрд░реВрд░рдд рд╣реИToSyncStore(params, store) рд╕рд╣реА рд╣реИ рдЕрдЧрд░ рд╕реНрдЯреЛрд░ рдХреЛ рд╕рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЧрд▓рдд
  • рд╕рд┐рдВрдХрд╕реНрдЯреЛрд░ (рдкреИрд░рд╛рдореНрд╕, рд╕реНрдЯреЛрд░) рд╕реНрдЯреЛрд░ рдХреЛ рд╕рд┐рдВрдХ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛

рдпрд╣рд╛рдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕реНрдорд╛рд░реНрдЯ (рдЬреИрд╕реЗ ImmutableJS/Map) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

import _ from 'lodash';
import * as Actions from 'actions';
import API from 'api';

export default class BooksLoader {
  needsToSyncStore(params, store) {
    let books = store.getState().books;

    if(books) {
      const book = _.findWhere(books.collection, { isbn: params.id });
      if(book) {
        return false;
      }
    }

    return true;
  }

  syncStore(params, store) {
    let { dispatch } = store;
    let api = new API();

    let loadBooks = Actions.loadBooks();
    return loadBooks(dispatch, store.getState);
  };
}

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

рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдПрдХ рд╕реНрдЯреЛрд░ рд▓реЛрдбрд░ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╣реИ рдЬреЛ @ryanflorence AsyncProps (https://github.com/rackt/async-props) рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░реЗрд░рд┐рдд рд╣реИ рдЬрд┐рд╕реЗ https://gist.githubред com/sebastiandeutsch/e6148ca0741cc355248c

рдпрд╣ рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдП ReactRouter рдХреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдХреЛ рднреА рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

<Provider store={store}>
  <Router
    history={browserHistory}
    render={(props) => (
      <StoreLoader {...props} store={store} />
    )}>
      {routes}
    </Router>
</Provider>

рдорд╛рд░реНрдЧ рдШрдЯрдХ рдореЗрдВ (рдпреЗ рд╡рд┐рд╢реЗрд╖ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рд░рд╛рдЙрдЯрд░ рд╕реЗ рд╕реАрдзреЗ рдмрдЪреНрдЪреЗ рд╣реИрдВ) рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

export class BooksShow extends React.Component {
  static contextTypes = {
    storeIsSynchronized: React.PropTypes.bool
  };
  ...
  render() {
    const { book } = this.props;

    if(this.context.storeIsSynchronized) {
      /* display components */
    } else {
      /* display loading spinner */
    }
}

export default connect(
  (state, props) => {
    return {
      book: _.findWhere(state.books.collection, { isbn: props.params.id } )
    }
  },
  (dispatch) => ({
    actions: bindActionCreators(Actions, dispatch)
  })
)(BooksEdit);

@gaearon рдЖрдк рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

@sebastiandeutsch рдореБрдЭреЗ рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИред рдореИрдВ рднреА Async-Props рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреЗ рд▓рдЧ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдереА рдХрд┐ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрдЬрд╛рдп рдЙрджрд╛рд╣рд░рдг рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ https://github.com/optimizely/nuclear-js/tree/master/examples/rest-api рдХреЛ рд░реЗрд╕реНрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдФрд░ рдПрдХреНрд╢рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЖрд╕рд╛рди рддрд░реАрдХреЗ рдХреЗ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рднреА рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рд╣реИ (рддрд╛рдХрд┐ рдЕрдЧрд░ рдЕрдиреБрд░реЛрдз рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреЙрд▓рд░ рдХреЛ xhr рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдПрдХ рдФрд░ рдордЬрдмреВрдд рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рд╣реИ : https://github.com/jordangarcia/nuclear-api-module-example/tree/master/rest_apiред рдФрд░ рдореИрдВрдиреЗ @jordangarcia рдХреА рдХреБрдЫ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ redux рднреА (рд╕рд╛рдорд╛рдиреНрдпрд┐рдЬрд╝рд░ рдЖрджрд┐ рдХреЗ рд╕рд╛рде)ред

@EricSimons рд╡рд┐рд╖рдп рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдЕрдЪреНрдЫрд╛ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдПрдкреАрдЖрдИ рдвреВрдВрдв рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ?

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

FYI рдХрд░реЗрдВ @ рдбреИрди-рд╡реАрд╡рд░ рдФрд░ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп - рдмреЗрдЭрд┐рдЭрдХ рдореБрдЭреЗ рдПрдХ рдиреЛрдЯ [email protected] рд╢реВрдЯ рдХрд░реЗрдВ

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

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

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

* _The рдЬрд╛рдирдХрд╛рд░реА рдлрд╝реЛрд▓реНрдбрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ / рдирд┐рд░реНрдгрдп made._ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ


_Sidenote:_ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ Redux рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╣рд╛рдиреА рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Relay рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБ рдЬреЛ Redux рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ 2 рдорд╣реАрдиреЗ рд╕реЗ _webapp_ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдореИрдВ рдЙрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде _webapp_ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

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

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ "_The_ Redux рдХреЗ рдЙрдиреНрдирдд TODOMVC" рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдПрдХ рдРрд╕реА рдпреБрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдбреИрди рдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

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

рдПрдкреАрдЖрдИ рдХреЗ рдореЛрд░реНрдЪреЗ рдкрд░ рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдирдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ ( JSON-API denormalisation рдФрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЖрдзрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ GraphQL рд╕рд░реНрд╡рд░ рд╣реИред

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


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

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

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

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

https://medium.com/@timbur/react -automatic-redux-providers-and-replicators-c4e35a39f1

TL; DR: рдЖрдк redux рдкреНрд░рджрд╛рддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ propTypes рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ components рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдПрдХ providers рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдФрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓реЗрдХрд┐рди рдЕрдиреБрд╢рдВрд╕рд┐рдд themes рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рдирд┐рдореЗрдп, рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп, рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЧреНрдп, рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╣реИред рдЗрд╕рдореЗрдВ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреИрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЛ рд╣реЙрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ, рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдЗрддреНрдпрд╛рджрд┐ рдЗрддреНрдпрд╛рджрд┐ред рдореИрдВрдиреЗ рдЖрдЬ рдкрд╣рд▓реЗ рд╢рд╛рдорд┐рд▓ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рдРрдк рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ 10 рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдореЗрдВ 1 рдШрдВрдЯрд╛ рд▓рдЧреЗрдЧрд╛ред :)

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

  • рдЗрд╕рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рд╣реИ рдЬреЛ "рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИред
  • рдпрд╣ рдкреНрд░рдпреЛрдЧ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИред рдПрдкреАрдЖрдИ рдореНрдпреВрдЯреЗрд╢рди рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ/рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓рд╛ рдЬреАрдердм рдЦрд╛рддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреГрдкрдпрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╕реНрдЯрдо API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рдо рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдХреЛ рднреА json-server рдореЗрдВ рдореЗрд░реЗ рдмреЙрдЯрд▓рдбрдПрдкреАрдЖрдИ рдЙрджрд╛рд╣рд░рдг ( рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓рд┐рдВрдХ рдХреЗ рднреАрддрд░ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдмреНрд▓реЙрдЧ рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣реИред рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рднреАрддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рд╡рд╣ рд╕рдм рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред

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

  • рд╕рдВрдЪрд╛рд▓рди рдмрдирд╛рдПрдВ, рдкрдврд╝реЗрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
  • рдЬреЗрд╕рди рд╡реЗрдм рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг
  • рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛
  • рдЯреИрдЧ
  • рдХреЛрд░реНрд╕

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдХреБрдЫ рдмрдЧ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ =)
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред

рдбреЗрдореЛ: https://gustavohenrique.github.io/gh1
рд╕реНрд░реЛрдд: https://github.com/gustavohenrique/gh1

рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рдж!

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

рд╣рдо async рдЬреЙрдм рдХреЗ рд▓рд┐рдП redux-thunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ redux-ignore рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдХреЗ рдПрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╕реБрдзрд╛рд░ (_on mobile_) рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред
рд╡реЗрдм рдРрдк 100% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ/рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

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

рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдБ рд▓рд┐рдВрдХ рд╣реИрдВ http://www.handy-erp.com/en/
рдмрд╕ рдПрдХ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЦреБрдж рдХреЛ рдЖрдЙрдЯ рдХрд░реЗрдВред

@SebastienDaniel рдмрдзрд╛рдИ рд╣реЛ! рдпрд╣ рдПрдХ рд╕реБрдВрджрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рд░реЗрдбрдХреНрд╕ рднрд╛рдЧ рдХреЛ рдХрд┐рд╕реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдерд╛?

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

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢реЗрдпрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!@gustavohenrique
рдЕрдиреНрдп рдмрд╛рддреЗрдВ:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪреА рд╣реЛ рд╕рдХрддреА рд╣реИ? рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ? рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ...
redux рдХреЛ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рдореИрдВ @gggin рдФрд░ @EricSimons рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдЙрддреНрдкрд╛рджрди рддреИрдпрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрднреБрдд рд╣реЛрдЧрд╛:

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

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

рд╕рдмрдХреЛ рдирдореНрд╕реНрдХрд╛рд░,

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдордЬрдмреВрдд redux crud api рд▓рд┐рдП рдПрдХ рдвреАрд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

https://github.com/ppiekarczyk/redux-crud-api-middleware/blob/master/README.md

рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд░рд╛рд╣рдиреАрдп рд╣реЛрдЧреАред рдзрдиреНрдпрд╡рд╛рдж!

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

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

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

рдХрд┐рд╕реА рднреА рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИ рдФрд░ рдЙрддреНрдХреГрд╖реНрдЯ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

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

рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреЛрдбрдмреЗрд╕ https://github.com/GoThinkster/redux-review рдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рд╣рд░ рдХрд┐рд╕реА рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдореБрджреНрджреЛрдВ рдФрд░ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдЕрд░реЗ рджреЛрд╕реНрддреЛрдВ, рд╢рд╛рдирджрд╛рд░ рдЪрд░реНрдЪрд╛ рдФрд░ рдПрдХ рдорд╣рд╛рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж..

рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг https://github.com/andrewngu/sound-redux рдкрд░ рдЖрдпрд╛, ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдпреЛрдЧреНрдп рднреА рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @gaearon рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдЕрд░реНрд╣рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реВрдЪреА рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝ рд╣реЛрдЧрд╛ред рд╕рд╛рде рд╣реА рдпрд╣ рдкрд┐рдЫрд▓реЗ рдбреЗрдврд╝ рд╕рд╛рд▓ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рднрдпрд╛рдирдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @EricSimons рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдерд╛ рдЬреЛ http://redux.js.org/docs/faq/Miscellaneous.html#miscellaneous -real-projects рдкрд░ рдХрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╡рд┐рд╢реНрд╡ рд░рд┐рдПрдХреНрдЯ рдФрд░ рд░реЗрдбрдХреНрд╕ рдРрдкреНрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╣ рд╕рд╛рдЙрдВрдб-рд░реЗрдбрдХреНрд╕ рдРрдк рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред)

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

рдФрд░ рд╣рд╛рдБ, рдЙрди рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЪрд░реНрдЪрд╛ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ!

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

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

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

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

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

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

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