рд╕рдВрдХрд▓реНрдк: Redux рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдЕрдВрддрддрдГ рд╣рдорд╛рд░реЗ рдирдП Redux рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдмрджрд▓ рдЧрдПред рдЗрд╕рдореЗрдВ рд╕реНрдЯреЛрд░ рд╕реЗрдЯрдЕрдк, рд░реЗрдбреНрдпреВрд╕рд░ рдкрд░рд┐рднрд╛рд╖рд╛, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЕрджреНрдпрддрди рддрд░реНрдХ рд╕рд╣рд┐рдд рдХрдИ рд╕рд╛рдорд╛рдиреНрдп Redux рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рднреА рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдпрд╛ рдПрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд╛рдЬреНрдп рдХреЗ рдкреВрд░реЗ "рд╕реНрд▓рд╛рдЗрд╕" рдХреЛ рдмрдирд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
Redux Starter Kit рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ (рдФрд░ рдпрд╣ рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ "Vision for Redux Starter Kit" рдШреЛрд╖рдгрд╛рдкрддреНрд░ рджреЗрдЦреЗрдВ ред
Redux рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬреЛ рдирдВрдмрд░ рдПрдХ рд╢рд┐рдХрд╛рдпрдд рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ "рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рд╣реИред рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдРрд╕реА рд╢рд┐рдХрд╛рдпрддреЗрдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдХрд┐ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдмрд╣реБрдд рд╕реЗ рдЕрдиреНрдп рдРрдбрдСрди рдЬреЛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╣рд▓реВ рдЬрд╣рд╛рдВ Redux рдХреА рдХреЛрдИ рд░рд╛рдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @tannerlinsley рдХреЗ рд╕рд╛рде рдЕрднреА рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред рд╣рдордиреЗ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА, рдЬреЛ
рдЙрд╕рдореЗрдВ рд╕реЗ, рд╣рдо рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдП, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╡реНрдпрд╛рдкрдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЛ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрддреЛрдВ, рджрд░реНрдж рдмрд┐рдВрджреБрдУрдВ рдФрд░ рдЪрд┐рдВрддрд╛рдУрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рдФрд░ рд╡рд┐рдЪрд╛рд░ рднреА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:
dispatch(actionType, payload)
рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИcreateReducer({[actionType]: (state, payload) => state}, initState)
рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬреЛ рд░реЗрдбрдХреНрд╕ рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рд░реЗрдбрдХреНрд╕-рдердВрдХ рд╕реЗ рджреВрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдХреЗрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреА рдУрд░ рдЕрдЧреНрд░рд╕рд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдкрдХреНрд╖ рд░реЗрдбрдХреНрд╕-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдпрд╛ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдЬреИрд╕реЗ рдкреНрд░рднрд╛рд╡ред
рдореИрдВ рдЗрд╕рдореЗрдВ рдЕрдкреАрд▓ рдХреЛ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ 'рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрднреНрдпрд╛рд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреИрдХреЗрдЬ' рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдбрд▓ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ред
рддреЛ, рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдмрд╛рдзрд╛рдПрдВ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ):
Redux рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп "рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛" рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдкрдардиреАрдп рдмрдирд╛рдирд╛ рд╣реИ
Redux рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдврд╛рдВрдЪреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рд▓рдЧрднрдЧ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛрдб (рд╕реНрдЯреЛрд░ рдФрд░ react-redux
) рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд╣реИред
рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП (рдореБрдЭреЗ рдЕрдм рддрдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдерд╛), рдпрд╣ рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рджреЗрдЦреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЕрдореВрд░реНрдд рдкрд░рддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреА рд▓рдЧрддреА рд╣реИред рдмрдврд╝рд┐рдпрд╛ рднреА! рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдпрд╣ рдЖрдкрдХреЛ MobX рдЬреИрд╕реЗ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд▓ рджреВрд░ рд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдврд╛рдВрдЪреЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ Redux рдХреЛ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдХреНрдпрд╛ рдЕрд▓рдЧ рдмрдирд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдХреИрд╕реЗ рд╣рдо Redux рдХреЛ рдирд┐рд░реНрд╡рд╛рдд рдореЗрдВ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддрд░рд╣ рд╣реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ)ред
рдорд╣рддреНрд╡ рдХреА рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреБрдиреМрддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рд╡реЗ Redux рд╕реЗ рдЯрдХрд░рд╛рддреЗ рд╣реИрдВ, Redux рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЕрдиреНрдп рдмрдбрд╝реЗ рдврд╛рдВрдЪреЗ рдЬреИрд╕реЗ рдХреЛрдгреАрдп рдЕрдореВрд░реНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣реА рджреВрд░ рдХрд░рддреЗ рд╣реИрдВред Redux рд░рд┐рдбреНрдпреВрд╕рд░ рд▓рд┐рдЦрдирд╛ рдХреЗрд╡рд▓ рд╡реЗрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдирдП рд▓реЛрдЧреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рдЕрдВрдд рдореЗрдВ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд░рд┐рдбрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдШрдЯрдХреЛрдВ, рд░реЗрдбреНрдпреВрд╕рд░ рдФрд░ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ (рд╢рд╛рдпрдж рд╕рднреА 3 рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдЙрдирдореЗрдВ рд╕реЗ 2) рдХреЗ рдмреАрдЪ 1: 1: 1 рд╕рдВрдмрдВрдз рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдирд╡рд╛рдЧрдВрддреБрдХ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХрдИ рд░реЗрдбреНрдпреВрд╕рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ , рдХрдИ рдШрдЯрдХ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд░рд┐рдбреНрдпреВрд╕рд░ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдФрд░ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрддреНрддрд░ рджрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ #1 рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рддреЛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреЛ рдЗрд╕реЗ рдЦреЛрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП (рд╕рд╛рде рд╣реА, "рд╕реНрд╡рд┐рдЪ рдЖрд░ icky" рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ)ред
рдЗрд╕рд▓рд┐рдП IMO, CTA рдореЗрдВ рдЕрдЪреНрдЫреЗ рд╡реИрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде "рдЖрд░рдВрдн рдХрд░рдиреЗ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде "рдХреНрдпреЛрдВ" рдХрд╛ рдЕрдзрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рд░рдЦрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред рдЖрдк рдХрдИ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦреЗ рдмрд┐рдирд╛ Redux рдореЗрдВ рд╡рд┐рд╢рд╛рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рдореИрдВ рдЦреБрдж рдПрдХ рд░реЗрдбрдХреНрд╕-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд▓рдбрд╝рдХрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдореБрджреНрджреЛрдВ рдХреЗ рдердВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдРрдкреНрд╕ рдХреА рдмрд╣реБ-рд╕реМ-рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЗрдВ рджреЗрдЦреА рд╣реИрдВ (рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЫреЛрдЯреЗ рдРрдкреНрд╕ рдердВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЯреНрд░реЗрдирд╡реНрд░реЗрдХ рдмрдирд╛рддреЗ рд╣реИрдВ)ред рдмрд╣реБрдд рдХрдо "рдореВрд▓" рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдирд╛ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдХрдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИред
"рд╕рднреА рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯреНрд╕ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рдХреАрдордд рдХреНрдпреЛрдВ рди рд╣реЛ" рдЗрди рджрд┐рдиреЛрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ ... рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдХрдард┐рди рд╣реИред
рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ w/redux рдереА рдХрд┐ рдпрд╛ рддреЛ рдореИрдВ рдПрдХ рдХреЛрдб рдкрдврд╝рддрд╛ рдпрд╛ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдПрди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдХреВрджрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдПрдХрд▓ рдпреВрдЖрдИ рднрд╛рдЧ рдХреЗ рдмреА/рд╕реА рддрд░реНрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ, рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдХрдИ рдХреЗ рдмреАрдЪ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдореИрдВ рдпреВрдЖрдИ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рд╕реЗ рд░рд╛рдЬреНрдп рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ (рдореБрдЦреНрдп рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реВрдВ), рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рднрд╛рдЧреЛрдВ рдХреЗ рдХрд┐рд╕реА рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рддреНрдпреБрддреНрддрд░ рдореЗрдВ рдореИрдВ рдЬрд┐рд╕ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реВрдБ, рдореЗрд░рд╛ рддрд░реНрдХ рдЙрддрдирд╛ рд╣реА рдзреБрдВрдзрд▓рд╛ рд╣реЛрддрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдпрд╣ рдпрд╛ рд╡рд╣ рдХрд┐рдпрд╛ рддреЛ рдХреНрдпрд╛ рд╣реБрдЖ, рдореИрдВ рдХреЗрд╡рд▓ рдкрдврд╝ рдпрд╛ рд▓рд┐рдЦ тАЛтАЛрдирд╣реАрдВ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЙрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// meta code
dispatch(ACTION);
onAction = {
ACTION: [
// handler 1: hide spinner here,
// handler 2: change status there,
// handler 3: update entity
],
};
рдЕрдВрдд рдореЗрдВ рдореИрдВ redux-interactions
+ redux-tree
рдФрд░ рдореИрдВ рдЕрдм рддрдХ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВред
рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг:
рдзреНрдпрд╛рди рджреЗрдВ, рдЖрд╡реЗрджрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реЛрдЧрд╛ :) рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рд░реАрдпрд▓рдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рд╕рд╛рдЧрд╛ рдпрд╛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдердВрдХ/рд╡рд╛рджреЗ рдкрд░ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ
service(name, method, ...opts)
рдЬреЛ рдкреЗрд▓реЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХреНрд╢рди рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рд╡рд╛рджрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЗрд╕реЗ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ x_FULFILLED
рднреЗрдЬрддрд╛ рд╣реИ , x_PENDING
, рдФрд░ x_REJECTED
)ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд╛рдо рднреА рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИредрд╣рдо рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП componentDidMount()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЕрднреА рднреА рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ (рдФрд░ рд▓реЙрдЧрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореЗрдЯрд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдЬрд╛рдирдХрд╛рд░реА рд╣реИ), рдФрд░ рдпрджрд┐ рд╣рдо рдЙрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд░ рд╕реБрдирддрд╛ рд╣реИ рдЬреЛ рдПрдХ reducer рдЬреЛрдбрд╝реЗрдВ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдЙрд╕ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдШрдЯрдХ рд╕реЗ рдПрдХреНрд╕реЗрд╕/рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд░рд┐рдбрдХреНрд╕ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВред рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд╣рд░ рдЬрдЧрд╣ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрдХрд░реНрд╖рдг рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрдкрд░ рдЯреНрд░реЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рдЯреАрдо рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдЯреАрдПрдо рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦреЗрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рдПрд╕рд┐рдВрдХ рдкреНрд░рд╡рд╛рд╣ рд▓реЙрдЧрд┐рди/рд▓реЙрдЧрдЖрдЙрдЯ рд╣реИ, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдХреЛрдб рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ), рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд╛рд░рдг - рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп + рдореЛрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ)ред redux-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдореБрдЭреЗ рддрддреНрдХрд╛рд▓ рд▓рд╛рдн рддрдм рддрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡реЗрдзрд╢рд╛рд▓рд╛ рд╕реНрд╡рдпрдВ рд▓рд╛рдн рдкреНрд░рджрд╛рди рди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд░реЗрдбреНрдпреВрд╕рд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рджреВрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЙрдЪреНрдЪ рдСрд░реНрдбрд░ рд░реЗрдбреНрдпреВрд╕рд░ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдкреЗрдЬрд┐рдиреЗрдЯрд░" рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд░реЗрдбреНрдпреВрд╕рд░ рддрд╛рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдкреЗрдЬрд┐рдиреЗрдЯреЗрдб рд╣реЛ рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рд╣реЛ рд╕рдХреЗ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдПрдВ)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдРрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ, рдЬреЛ рдЕрдВрддрд░-рдШрдЯрдХ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд░реЗрдбрдХреНрд╕ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ redux-x рдХреЗ рд╕рд╛рде рдорджрдж рдХреА рдЬрд╛рдП ред рдпрд╛рдиреА рдХрдм рдФрд░ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдбред рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореМрдЬреВрдж рд╣реИрдВред
рдЬреЛ рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рд╡рд╣ рдореЗрд░рд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЧреЙрдерд┐рдВрдХрд╕реНрдЯрд░/рд░рд┐рдПрдХреНрд╢рди-рд░реЗрдбрдХреНрд╕-рд░рд┐рдпрд▓рд╡рд░реНрд▓реНрдб-рдЙрджрд╛рд╣рд░рдг-рдРрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВ
рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЛ рд░реЗрдбрдХреНрд╕ рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рд░реЗрдбрдХреНрд╕-рдердВрдХ рд╕реЗ рджреВрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдХреЗрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореЗрд░реА рджреВрд╕рд░реА рдЪрд┐рдВрддрд╛ рд╣реИ: рд╣рдо рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдмреВрдд рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрд╕ рджреЗрд╡реЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореВрд╣ рдЕрднреА рддрдХ _рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕_ рдФрд░ рдЕрдиреНрдп рдмреЗрд╕рд▓рд╛рдЗрди рдИрдПрд╕ (6 | 2015) рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред , рд╕рдордЭ рдХреА рдХрдореА, рдбрд░рд╛рдиреЗ-рдзрдордХрд╛рдиреЗ рдЖрджрд┐ рдХреЗ рдХрд╛рд░рдг, рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЬреЛ Redux рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ Redux рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП _patterns_ рд╕реАрдЦрдиреЗ рд╕реЗ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ?
Redux-thunk рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ redux рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рдЭреБрдХрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди/рдХреЙрд▓рдмреИрдХ рд╣реИ, рдЬреЛ рдХрд┐ рдпрджрд┐ рдЖрдк JS рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдЙрдард╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореБрдЭреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкреИрдХреЗрдЬ рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИ, рдПрдХ рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ "рд╕рд░реНрд╡реЛрддреНрддрдо-рдЕрднреНрдпрд╛рд╕-рд╣рдореЗрд╢рд╛-рд░реЗрдбрдХреНрд╕" рдХреЗ рдмрдЬрд╛рдп "рд╕реАрдЦрдиреЗ-рд░реЗрдбрдХреНрд╕" рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реЛред рдЬрд┐рд╕ рддрд░рд╣ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХреА рдЧрдИ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреНрд╡реАрдХрд┐рдВрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реЗрдбрдХреНрд╕-рдердВрдХ рд╕реЗрдЯрдЕрдк рдХреЛ рд╕рд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЖрджрд┐ред "рдирд┐рдХрд╛рд▓рдиреЗ" рдХрд╛...
рдмрд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореЗрд░реА рджреВрд╕рд░реА рдЪрд┐рдВрддрд╛ рд╣реИ: рд╣рдо рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдмреВрдд рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрд╕ рджреЗрд╡реЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореВрд╣ рдЕрднреА рддрдХ рддреАрд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдЖрдзрд╛рд░рднреВрдд ES(6|2015) рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред , рд╕рдордЭ рдХреА рдХрдореА, рдбрд░рд╛рдиреЗ-рдзрдордХрд╛рдиреЗ рдЖрджрд┐ рдХреЗ рдХрд╛рд░рдг, рдЬреЛ рд▓реЛрдЧ Redux рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ Redux рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЛ рд╕реАрдЦрдиреЗ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ?
рдмрд┐рдВрдЧреЛ! рд╣рдо рдРрд╕реЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ (рдпрд╛ рд╡реЗ рдЬреЗрдПрд╕ рдХреЛ "рдЬрд╛рдирддреЗ рд╣реИрдВ", рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡реЗ рдЧрд╣рд░реЗ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рд╡реЗ рд▓реЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ (рдЬрд╛рд╡рд╛, рд░реЗрд▓, рдЖрджрд┐) рд╕реЗ рдЕрдиреБрднрд╡реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВ, рддреЛ рд╡реЗ рдЙрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЖрдЬрдорд╛рдПрдВрдЧреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗ рдЕрдЯрдХ рдЬрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдпреВрдПрдХреНрд╕ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдореЗрдВ рдХреВрджрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЗрдПрд╕ рдХреА рдЧрд╣рд░реА рд╕рдордЭ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Redux рдбреЙрдХреНрд╕ рдореЗрдВ рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдиреБрднрд╛рдЧ рд╣реИ рдЬреЛ рдЕрднреА рдХреБрдЫ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ рдФрд░ Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдкрдирд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред Redux рдЯреАрдо рдиреЗ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реБрдирд╛, рдорд╛рдирд╛ рдФрд░ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреАред рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдЧрд╛ рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдкрд╣рд▓реЗ рд╣реА рдЪрд░реНрдЪрд╛ рд╣реЛ рдЪреБрдХреА рд╣реИред
рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдврд╛рдВрдЪреЗ рдХреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд▓рдн рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ (рдирдпрд╛ рдФрд░ рдЕрдиреБрднрд╡реА)ред
рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдм рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЕрдореВрд░реНрдд рдХреЗ рдиреАрдЪреЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛред рдЕрдореВрд░реНрдд рдХреЛ рдЕрдкрдирд╛рдиреЗ рдореЗрдВ рдордЬрд╝рд╛ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝ рдХрд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдореВрд░реНрдд рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред
Redux рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдЦрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдЕрдореВрд░реНрдд рдкрд░рддреЗрдВ рдЕрдХреНрд╕рд░ рдЪрд▓реА рдЬрд╛рддреА рд╣реИрдВ
рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо Redux рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ? рдЖрдк рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ рдпрд╛ рдЙрд╕ рдкрд░ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА?
рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛/рд░рд┐рдбрдХреНрд╕ рдЬреАрд╡рдирдЪрдХреНрд░ рдХрд╛ рдПрдХ рдЖрд░реЗрдЦ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХрд╛рдо рдкрд░ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛:
рдЗрд╕рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ Redux рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдмрд┐рдирд╛ рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдХрдВрдЯреЗрдирд░ рдХрдИ рдмрд╛рд░ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡реНрдпреВ рд▓реЙрдЬрд┐рдХ рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдПрдорд╡реАрд╕реА рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрд╕ рдЖрд░реЗрдЦ рдореЗрдВ "рджреГрд╢реНрдп" рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреЛрд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдордЧреНрд░ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╣реА рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдЬреИрд╕реЗ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕, рд░рд┐рдбреНрдпреВрд╕рд░ рдпрд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд░рд┐рдбреНрдпреВрд╕рд┐рдВрдЧ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреЗрдЬ рдХреА рдпреБрдХреНрддрд┐рдпрд╛рдВ рдЙрди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреА рд╣реИрдВред рдЗрд╕реЗ рдФрд░ рднреА "рдмреЗрд╣рддрд░" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдКрдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред (рдиреЛрдЯ: рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реВрдВ, рдореБрдЭреЗ рдЕрднреА рдпрд╣ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред)
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ Redux рд╢рд┐рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрджрд┐ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рдХреЛ рдЯрдЯреЛрд▓рдирд╛ рдХрдард┐рди рд╣реИ, рддреЛ рд╣рдореЗрдВ Redux рдбреЙрдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд▓рдн рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдбреЙрдХреНрд╕ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред
рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ (рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ) рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореЗрд░реА рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдореЗрд░реА рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдРрд╕рд╛ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рдЬреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╣рд░ рддрд░рд╣ рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред
рдЕрдм рддрдХ рдХреБрдЫ рдЕрдЪреНрдЫреА рдЪрд░реНрдЪрд╛ред рд▓реЗрдореЗ рдиреЗ рдЖрдо "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреЗ рдХреБрдЫ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рдЯреЙрд╕ рдХрд┐рдП рдЬреЛ рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:
dispatch
рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдореБрдЭреЗ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реИ?"рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг:
рдФрд░ рдЙрди "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рдЯреЙрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рд╕реВрдЪреАрдмрджреНрдз рдкрд╛рдВрдЪ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ " dispatch
" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _required_ рд╣реИред рд╢реЗрд╖ рдХреЗ рд▓рд┐рдП:
store.dispatch()
рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ Redux рдХрд╛ рдПрдХ рдореВрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рд░реНрдгрдп рд╣реИред рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдмрд╛рдВрдзрдиреЗ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЕрд╕рдВрдмрджреНрдз рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдЬрдм рднреА рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рднреА рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реНрдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрддреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЗрди "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рдЪрд┐рдВрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ _required_ рд╣реИред рдпрд╣ рдбреЙрдХреНрд╕ рдФрд░ "рдЕрдЪреНрдЫреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рдерд╛рдУрдВ" рдЬреИрд╕реЗ рдбреА-рдбреБрдкреНрд▓рд┐рдХреЗрдЯрд┐рдВрдЧ рдХреЛрдб рдФрд░ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @markerikson рджреНрд╡рд╛рд░рд╛
Redux рдПрдХ рдЕрд░реНрде рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП "рдирд┐рдореНрди-рд╕реНрддрд░реАрдп" рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд┐рд╕реА рднреА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рддрд░рд╣, рдпрд╣ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @gaearon рдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЫреЛрдЯрд╛ рдФрд░ рд▓рдЪреАрд▓рд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЙрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ Redux рдХреЛрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдмрд╣реБрдд рд╕реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрдЪреНрдЫреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ?) рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╕реАрдзреЗ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рд░рд╛рд╕реНрддрд╛ рджреЗрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ Redux рдХреЛ рдЗрд╕рдХреЗ рдореВрд▓ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рднреА рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (рдпрджрд┐ рдЖрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ: рдореБрд╕реНрдХрд╛рди :) рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, Redux рдХреЛрд░ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рд╕реБрдзрд╛рд░рдирд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд╕реНрдерд┐рд░ рдФрд░ рд▓рдЪреАрд▓рд╛ рд╣реЛ рддрд╛рдХрд┐ рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд╢рд╛рдпрдж рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рдХреА рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ , рддреЛ рдЪрд▓рд┐рдП Redux рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдЕрдиреНрдп рд╕рдореБрджрд╛рдп рдореЗрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╣реИред "mio" рдирд╛рдордХ рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз IO рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ Redux рдХреА рддрд░рд╣ рд╣реА рдЫреЛрдЯреЗ рдФрд░ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╣реЛрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рдФрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рднрд░рд╛ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЯреЛрдХрд┐рдпреЛ рдирд╛рдордХ рдПрдХ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдПрдордЖрдИрдУ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рдФрд░ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, рдЬрд┐рд╕ рдХрд┐рд╕реА рдХреЛ рднреА mio рд╕реЗ рдкреНрд▓рдВрдмрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рд╕реАрдзреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ рдХреЛрдИ рднреА рдЬрд▓реНрджреА рд╕реЗ рдХреБрдЫ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╡рд╣ рдЯреЛрдХреНрдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдореЙрдбрд▓ рдЕрдкрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреБрдЫ @sunjay рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
#775 рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рдереА рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддреА рд╣реИ:
Redux рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓реЗрдкрди рдХрд╛ рд╕рдВрддреБрд▓рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ, рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдбреАрдмрдЧрд░ рдпрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред
рддреЛ рд╣рд╛рдБ, Redux рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ "рд╕рд┐рд░реНрдл рдПрдХ рдкреИрдЯрд░реНрди" рд╣реИред рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛-рдкреВрд░реНрдг рд╣реИ - рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд░реНрдз-рдирд┐рдпреЛрдЬрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдиреНрд╣рд╛рдВрд╕рд░ рдкреБрдирд░реНрдЧрдарди ( #1702, #2214 ) рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдФрд░ рд╕рдВрднрд╡рддрдГ combineReducers
рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ ( #1768 , #1792 , рдЖрджрд┐) рдмрдирд╛рддреЗ рд╣реИрдВред )
Redux рдХреЛ рдмрдирд╛рдП рд╣реБрдП рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, @jimbolla рдиреЗ #2214 рдореЗрдВ рд╕рднреА рдЬреНрдЮрд╛рдд рд╕реНрдЯреЛрд░ рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдПрдХрддреНрд░ рдХреА, рдФрд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА Redux рдХреА рд╕рд╛рджрдЧреА рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреБрдЫ рдЕрднреА рднреА рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╕рд╛рд░ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ред
рдЕрд░реНрдз-рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдПрдХ рдЕрдиреНрдп рд╕реЗрдЯ, рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕рдореЗрдВ рдореЗрд░реА рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реБрдЪрд┐ рд╣реИ, " рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд▓реЙрдЬрд┐рдХ / рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕" рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ (рдкреНрд░рддрд┐ "рдПрд▓реНрдо / рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрд▓реЗрдмрд▓ рдлреНрд░рдВрдЯрдПрдВрдб" рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди ), рдФрд░ "рдкреНрд▓рдЧ -рдПрдВрдб-рдкреНрд▓реЗ рд░реЗрдбрдХреНрд╕ рд╕реЗрдЯрдЕрдк" (рдЬреИрд╕рд╛ рдХрд┐ https://github.com/brianneisler/duxtape/issues/1 , https://github.com/jcoreio/redux-features/issues/7 , рдЖрджрд┐ рдЬреИрд╕реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдФрд░ рдРрдк рд╕реЗрдЯрдЕрдк рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдирд╣реАрдВред
рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, @toranb рдиреЗ https://github.com/ember-redux/ember-redux рдкрд░ Redux рдХреЗ рд▓рд┐рдП рдПрдореНрдмрд░ рд░реИрдкрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмреЗрд╣рддрд░реАрди рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдПрдореНрдмрд░ рджреБрдирд┐рдпрд╛ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рд╕рдореНрдореЗрд▓рди" рдореЗрдВ _really_ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП ember-redux
рдПрдХ рдЙрдЪрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯреЛрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ redux-thunk
рдФрд░ рдРрд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ рд╣рд╛рдБ, рдореИрдВ рдпрд╣рд╛рдБ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореИрдВ Redux рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдкреВрд░реЗ рдмреЛрд░реНрдб рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
Redux рдПрдХ рд╕рд╛рдорд╛рдиреНрдп API рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВред рдпрд╣ рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХреА рд╢рдХреНрддрд┐ рдЬрдЯрд┐рд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рд╣реИ, рдЬрдмрдХрд┐ рдХреЛрдИ рднреА рдирдпрд╛ рдпрд╛ рд╕рд░рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ https://github.com/acdlite/redux-actions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА redux рдХреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдмрд╕ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣реЛрдирд╛ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рджрд░реНрдж рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдХреНрдпрд╛ рдмрд╛рдд рд╣реИред рдареАрдХ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдпрдж рддрдм рддрдХ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рджрд░реНрдж рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдбреИрди рдХреА рдПрдЧрд╣реЗрдб рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИред
https://egghead.io/courses/getting-started-with-redux
https://egghead.io/series/build-react-applications-with-idiomatic-redux
рд╕рдВрджрд░реНрдн: рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо: https://www.youtube.com/watch?v=mVVNJKv9esE
рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - redux-actions
рдХреБрдЫ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ, .toString
рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рд╕рдореАрдХрд░рдг рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╛рдл рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ redux-actions
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ
рдЗрдореНрд╣реЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рддрдВрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ( subscribe
рдХрд╛ рдХреЙрд▓рдмреИрдХ рддрд░реНрдХ?) рдкреНрд░реЗрд╖рдг рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдо (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╛рдлреА рд╕реАрдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдмрд╛рд╣рд░, рдпрд╛рдиреА рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдпрд╛ connect
)
рдореИрдВ рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЛ redux рд╕рд┐рдЦрд╛рддрд╛ рд╣реВрдБ рдФрд░ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд╛рдлреА рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рдПрдХ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдорд╣рд╛рди рд╕рд╛рд░ рд╣реИрдВ рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕реБрдкрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рднреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рднреА UI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдо рддреМрд░ рдкрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдИ рдЪрд▓рддреА рднрд╛рдЧреЛрдВ рд╕реЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдереЗред рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рд░реЗрдбрдХреНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╡реИрд╕реЗ рд╣реА рд░рд╣ рд╕рдХреЗред
render
рд╡рд┐рдзрд┐ рдореЗрдВ рдЧреВрдВрдЧрд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВredux action loadUsers
рдЯреА
рд╕рд╣рдордд, redux-actions
рдХреБрдЫ рд╕рд░рд▓ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрд╣ рдкреВрдЫрдиреЗ рджреЗрдВ: рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрдЯ-рдРрдк рдореЗрдВ react-scripts
рдкреИрдХреЗрдЬ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреИрдмреЗрд▓ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╣реИрдВ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдордЭрджрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд redux-scripts
рдкреИрдХреЗрдЬ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ redux-thunk
рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп (рдирдХрд╛рд░рд╛рддреНрдордХ) рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕реБрдЭрд╛рдКрдВрдЧрд╛ (рдореИрдВ рд╢рд╛рдпрдж рдЕрдм рдЗрд╕рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛):
dispatch
рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдХреЛрдб рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛редрд╣рдордиреЗ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрдкрдпреЛрдЧреА рдерд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд░реЗрдбрдХреНрд╕-рдердВрдХ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ void
рд▓реМрдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реБрдИ (рд╕реЛрдЪреЗрдВ "рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдлрд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдВ")
рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ dispatch
рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░/рдХреЙрд▓рдмреИрдХ рд╕реЗ рд╣реИ"ред рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо connect
рд╕реЗ react-redux
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ mapDispatchToProps
рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЭреБрдХрд╛рд╡ рдХрд░ рд░рд╣реЗ рдереЗ, рд╣рдо рднреВрд▓ рдЧрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ред
(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡реЗрджрди рдЬреНрдпрд╛рджрд╛рддрд░ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реЗ Redux рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдЙрд╕рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
@ рдмреЛрдзреА : redux-thunk
11 рд▓рд╛рдЗрди рд▓рдВрдмреА рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреИрд╕реЗ "рдердВрдХ рдХреНрдпрд╛ рд╣реИ?" . рдердВрдХреНрд╕ _are_ рдХрдВрдкреЛрдЬрд╝реЗрдмрд▓ рдЯреВ _some_ рд╣рдж рддрдХ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЖрдо рддреМрд░ рдкрд░ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ "рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рдЗрди рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВ, рдлрд┐рд░ рдЕрдкрдиреА AJAX рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдпрд╣рд╛рдВ"ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреЛрд╕реНрдЯ рд╣реИ рдЬреЛ Idiomatic Redux: Thinks on Thunks, Sagas, Abstraction, рдФрд░ Reusability рдкрд░ рдердВрдХреНрд╕ (рдФрд░ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╛рдЧ) рдХреЗ рдХреБрдЫ рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░реЗрдбрдСрдлрд╝
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдХреБрдЫ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЕрдореВрд░реНрдд рдкрд░рдд рдореЗрдВ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП _some_ "рдзрдиреНрдп" рдпрд╛ "рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд" рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рд╛рдЧ рдФрд░ рд╡реЗрдзрд╢рд╛рд▓рд╛ рджреЛрдиреЛрдВ рдорд╣рд╛рди рд╣реИрдВ, _if_ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд▓рдХреНрд╖реНрдп Redux рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ redux-thunk
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рднреА рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рдл, рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдФрд░ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдмреЛрдзрд┐: рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╖рдп, рд▓реЗрдХрд┐рди рд╕реЛрдЪрд╛ рдХрд┐ рд╢рд╛рдпрдж рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рдг рд╢реВрдиреНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░реАрдбрдореА рдореЗрдВ рд░рдЪрдирд╛ рдкрд░ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ:
https://github.com/gaearon/redux-thunk/blob/master/README.md
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕ рдЦреБрд▓реА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╕рднреА рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реБрдирдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдм рддрдХ рдердВрдХреНрд╕ рд╕реЗ рдЪрд┐рдкрдХреЗ рд╣реБрдП рд╣реИрдВ рд▓реЗрдХрд┐рди "рдХреНрдпрд╛ рд╣реБрдЖ" рдХреЛ "рд░рд╛рдЬреНрдп рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП" рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╡рд╣ рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ (рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рдХреБрдЫ рд╣реБрдЖ рд╣реИ, рдЙрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп), рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ рдХрд░реЛ (рдЕрднреА рддрдХ рд╕рд╛рдЧ рдкрд░ рдирд╣реАрдВ рдмреЗрдЪрд╛ рдЧрдпрд╛)ред
19 рдорд╛рд░реНрдЪ 2017 рдХреЛ 23:48 рдмрдЬреЗ рдмреЛрдзрд┐ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдореИрдВ redux-thunk рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп (рдирдХрд╛рд░рд╛рддреНрдордХ) рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕реБрдЭрд╛рдКрдВрдЧрд╛ (рдореИрдВ рд╢рд╛рдпрдж рдЕрдм рдЗрд╕рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛):
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рджреВ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдмреЙрдпрд▓рд░-рдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИред рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрд╕рд┐рдВрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдкреНрд░реЙрдкреНрд╕ рд╕реЗ рдкреНрд░реЗрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдХреЛрдб рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рд╕рд╛рде рдмрдбрд╝реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЖрдЦрд┐рд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рд░реЗрдбрдХреНрд╕ рд╢реИрд▓реА рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрдкрдпреЛрдЧреА рдерд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрдХ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реБрдИ (рд╕реЛрдЪреЗрдВ "рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдлрд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдВ"), рд░реЗрдбрдХреНрд╕-рдердВрдХ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп рд▓реМрдЯрдиреЗ рдХреЗ рдХрд╛рд░рдг (рдпрд╛рдиреАред рдЕрдЧрд▓реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд╛рджреЗ рдЬреИрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ)редрдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд░рд┐рдПрдХреНрдЯ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░/рдХреЙрд▓рдмреИрдХ рд╕реЗ рддреБрд░рдВрдд рдкреНрд░реЗрд╖рдг рдХрд░рдирд╛ рд╣реИ"ред рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ-рд░рд┐рдбрдХреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ рдореИрдкрдбрд┐рд╕реНрдкреИрдЪрдЯреЙрдкреНрд░реЙрдкреНрд╕ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЭреБрдХрд╛рд╡ рдХрд░ рд░рд╣реЗ рдереЗ, рд╣рдо рдпрд╣ рднреВрд▓ рдЧрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡реЗрджрди рдЬреНрдпрд╛рджрд╛рддрд░ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реЗ Redux рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдЙрд╕рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред
(рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди...)
рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рдг рд╢реВрдиреНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред
рд╣реБрд╣, рдмрдврд╝рд┐рдпрд╛! рдорд╛рди рд▓реАрдЬрд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдмрд╣реБрдд рдХрд░реАрдм рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ред
рдПрдХ рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рдЪреАрдЬ рдЬрд┐рд╕рдиреЗ Redux рдХреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрджреЗрд╢реЛрдВ рдХреЛ ред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрдирдореЗрдВ рдХреНрдпрд╛ рд░рдЦрд╛ рдЬрд╛рдПред
рдЕрд╡рдпрд╡ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рддрдЪреАрдд рд░рд╛рдЬреНрдп рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдХреЗрд╡рд▓, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдмрдЯрди рдПрдХреНрд╕ рдХреНрд▓рд┐рдХ" рдмрд╛рд╣рд░ рдХреА рджреБрдирд┐рдпрд╛ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрдВрджрд░ рд╣реБрдЖ рдмрддрд╛рдУред рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдШрдЯрдХ рдФрд░ рд░рд╛рдЬреНрдп рдХреЗ рдмреАрдЪ рджреЛ-рддрд░рдлрд╝рд╛ рдмрдВрдзрди рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВред
рд░реЗрдбреНрдпреВрд╕рд░ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ рдШрдЯрдХ рд░рд╛рдЬреНрдп , рдФрд░ рд╡реЗ рдПрдХрдорд╛рддреНрд░ рдкрд╛рд░реНрдЯреА рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рд╛рдЬреНрдп "рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ" рдХрдерди рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдПрдХрд▓ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдорд▓рд╛ рднреА рджреВрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЛ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдПрдХреНрд╢рди рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
DevTools рдореЗрдВ рдПрдХреНрд╢рди рд▓реЙрдЧ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдк рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реБрдЖ ,
рдЗрд╕ рдкреБрд▓-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЗрдЯрд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╡рд╛рд╣ рдХреА рддрд░рд╣ рдкрдХреНрд╖ рдкреНрд░рднрд╛рд╡ рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдПрдХ рддрд░рд╣ рд╕реЗ рдФрд░ рдвреЗрд░ рдмрдирд╛рддрд╛ рд╣реИ redux-saga
рдпрд╛ redux-observable
ред
@aikoven рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ (рдЕрддреАрдд рдореЗрдВ FETCH_USER
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрдо рд╣реИ (рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдХрд░рдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ)ред рдпрд╣ рдЕрдзрд┐рдХ "рдХрдорд╛рдВрдб-рд▓рд╛рдЗрдХ" рдФрд░ рдлрд┐рд░ "рдЗрд╡реЗрдВрдЯ-рд▓рд╛рдЗрдХ" рд▓рдЧрддрд╛ рд╣реИред
@blocka рд╣рдореЗрд╢рд╛ рдХреЛрдИ рди рдХреЛрдИ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реЛрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЛ FETCH_USER_STARTED
рдФрд░ FETCH_USER_DONE
/ FETCH_USER_FAILED
рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд░рд╛рдЬреНрдп рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд░реЗрдбрдХреНрд╕ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред jumpstate
рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдереЛрдбрд╝рд╛ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдм рдореБрдЭреЗ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рджреЛ рдЪреАрдЬреЗрдВ рд╕реАрдЦрдиреА рд╣реЛрдВрдЧреАред
рддреЛ рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ, рдмреЙрдпрд▓рд░ рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬреЛ рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдЬреИрд╕рд╛ рдорд╣рд╕реВрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╡рд╣реА рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рджреЛрд╣рд░рд╛рд╡ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рдЕрдореВрд░реНрдд, рдЕрдХреНрд╕рд░, рдЖрдкрдХреА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ "рдЪрд╛рдВрджреА рдХреА рдЧреЛрд▓реА" рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЕрд▓рдЧ рд╣реИрдВред
Redux рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдмрд╛рдд рд╣реИред рдпрджрд┐ рдЖрдк рдареАрдХ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ FETCH_X_STARTED
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ fetchX()
рдПрдХреНрд╢рди рдирд┐рд░реНрдорд╛рддрд╛, рдФрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбреНрдпреВрд╕рд░, рдЖрджрд┐, рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЕрдореВрд░реНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ!
рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд░реЗрдбрдХреНрд╕ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рдЖрдкрдХреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ redux-thunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рднреА рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рдл, рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдФрд░ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП redux-thunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдкреНрд░реЗрд╖рдг рдкреНрд░рд╡рд╛рд╣ рдЖрджреЗрд╢ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд░реНрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рд╢реБрджреНрдз рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реЛрдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд░рд╛рдЬреНрдп рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмреИрдЪрд┐рдВрдЧ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдХрд╛рд░реНрдп рд╣реИрдВред
рдореИрдВ рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ: http://blog.isquaredsoftware.com/2017/01/idiomatic-redux-thinks-on-thunks-sagas-abstraction-and-reusability/
@Machiaweliczny рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХрд╣рд╛рдВ рд░рдЦрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ https://medium.com/@jeffbski/where -do-i-put-my-business-logic-in-a- рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕-рдЖрд╡реЗрджрди-9253ef91ce1#.3ce3hk7y0)ред рдЖрдк рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░реЗрд╖рдг рдкреНрд░рд╡рд╛рд╣ (рдердВрдХ, рдорд╣рд╛рдХрд╛рд╡реНрдп, рдЧрд╛рдерд╛, рдЬреЛ рднреА рд╣реЛ), рдХреЛ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рддрдХ рдХрднреА рднреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?
@dfbaskin
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ Redux рдбреЛрдореЗрди рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВ рд╣реИред "рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ" рдпрд╣рд╛рдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд╕реНрдкрд╖реНрдЯ рдЪрд┐рдВрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ "рдХрд┐рд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдХрд╛рд░реНрдп рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЙрд╕ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ"ред рдЖрдкрдХрд╛ "рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ" рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ, рд░рд┐рдбреНрдпреВрд╕рд░, рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдФрд░ "рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░реНрд╕" рдореЗрдВ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИ (рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдПрдХ рдмреЗрд╣рддрд░ рд╢рдмреНрдж рд╣реИ?) рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред
рд░реЗрдбреНрдпреВрд╕рд░, рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ (state, action) => state
рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ "рддрд░реНрдХ рдЬреЛ рд░рд╛рдЬреНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ" рдЖрдо рддреМрд░ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрд▓реНрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдореЗрдВ, рдРрд╕реЗ рд╕рднреА рддрд░реНрдХ "рдЕрдкрдбреЗрдЯ" рдлрд╝рдВрдХреНрд╢рди (рд╣рдорд╛рд░реЗ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рдмрд░рд╛рдмрд░) рдореЗрдВ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ Redux рдореЗрдВ, рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЗрд╡рд▓ рдХрднреА рднреА рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ "рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ" рдЬреЛ рд░рд╛рдЬреНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рддреЛ рдЗрд╕реЗ рдкреНрд░реЗрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрджрд┐ рдШрдЯрдХ рдореЗрдВ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ), рдпрд╛ рдЖрдкрдХреА рдкрд╕рдВрдж рдХреА рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рдердВрдХ, рд╕рд╛рдЧ, рдорд╣рд╛рдХрд╛рд╡реНрдп), рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред
рдпрджрд┐ рдпрд╣ рд░реЗрдбреНрдпреВрд╕рд░ рдХреА рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрддрд╛, рддреЛ рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рддрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрдм рд▓реЛрдЧ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдпрд╛ рд░реЗрдбрдХреНрд╕-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдЙрдирдХреЗ рдХрд╛рд░реНрдп/рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рд░реНрдорд╛рддрд╛ рдЖрдорддреМрд░ рдкрд░ рдирд┐рдХрдЯ-рддреБрдЪреНрдЫ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд▓рд╕ рдпрд╛ рдорд╛рдЗрдирд╕ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдпрд╛ рд╕реНрд╡рд░реВрдкрдг), рдФрд░ рдЧрд╛рдерд╛/рдорд╣рд╛рдХрд╛рд╡реНрдп рд▓рдЧрднрдЧ "рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реЗрдбреНрдпреВрд╕рд░" рд╣реЛрддреЗ рд╣реИрдВред , рдЙрд╕ рдкрд░ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рд░рд╛рдЬреНрдп рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдФрд░ рдПрдХ "рдЪреАрдЬ" рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЗрдбреНрдпреВрд╕рд░ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рд░реЗрдбреНрдпреВрд╕рд░ рдФрд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдмрд╣реБрдд рдирд┐рдХрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдХрднреА-рдХрднреА рдмрд╣реБрдд рдирд┐рдХрдЯ рд╕реЗ, рдФрд░ 2 рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдзреЗ рд╕рдордп рдореЗрдВ рд╡рд┐рдирд┐рдореЗрдп рд╣реИрдВ ...
@Machiaweliczny : рдЙрд╕ "рдереЙрдЯреНрд╕ рдСрди рдердВрдХреНрд╕" рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ "рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдердВрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ" рдЬреЛ рдореИрдВ рдХрд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЙрд╕рдХрд╛ _opposite_ рд╣реИ :)
рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рдЪрд░реНрдЪрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╖рдп рд╕реЗ рдереЛрдбрд╝рд╛ рджреВрд░ рдЬрд╛рдиреЗ рд▓рдЧреЗ рд╣реИрдВред (рдХреНрдпрд╛ рд╡рд╣ рдмрд╛рдЗрдХрд╢реЗрдб рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд╣рд╛рдВ рджреЗрдЦрддрд╛ рд╣реВрдВ? :))
рдореБрдЭреЗ рдореВрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рджреЗрдВ:
рдЗрдирд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреМрди рд╕реЗ рдареЛрд╕ рдХрджрдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ?
рдЧреИрд░-рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп, рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХрджрдореЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛:
1) рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ (рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд▓реНрдо рдореЗрдВ "рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк" рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдРрдк рдкреНрд░рдХрд╛рд░ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ред рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд╕рд╛рдзрд╛рд░рдг рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдореЗрдВ 90% рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рд▓реЛрдЧ рдЕрднреА рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВред рдЖрдЬ рддрдХ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд░ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдорд┐рдбрд▓рд╡реЗрдпрд░ (devtools, thunks) рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдпрд╣ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдХрд┐ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ Redux рдХреЛрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред
2) рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд "рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реНрдЯреЛрд░" рдХреЗ рд╕рд╛рде Redux рдХреЛ create-react-app рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЗ рдкрд╛рд╕ 2 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдЕрдк рдФрд░ рд░рдирд┐рдВрдЧ Redux рдРрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдмрд╣реБрдд, рдмрд╣реБрдд рджреВрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк рд╕реЗ, рдореЗрд░рд╛ рдорддрд▓рдм рдРрдк рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ "рдХреНрд░рд┐рдПрдЯрд╕реНрдЯреЛрд░" рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЙрдЪрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдмрд╕ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрдм рд╡реЗ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" createStore рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЗрд╕реЗ рдмрдврд╝рд╛ рджреЗрддреЗ рд╣реИрдВред
рдпрд╣ рд╡рд╣рд╛рдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рдХреЛ рд╕реБрдмрд╣ 10:02 рдмрдЬреЗ рдлреНрд░реЗрдВрдХреЛрдЗрд╕ рд╡рд╛рд░реНрдб рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рдЧреИрд░-рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп, рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХрджрдореЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛:
1.
рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ (рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде
рд╡рд┐рдиреНрдпрд╛рд╕? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд▓реНрдо рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛
рдПрдХ "рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк" рдкреНрд░рдХрд╛рд░, рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдРрдк рдкреНрд░рдХрд╛рд░ред рд╕реНрдЯрд╛рд░реНрдЯрд░ рдРрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдЬрдм рд▓реЛрдЧ рд╣реЛрдВ рддреЛ 90% рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдРрдкреНрд╕ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдореЗрдВ
рдмрд╕ рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдБред рдЖрдЬ рддрдХ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд░ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рдмреБрдирд┐рдпрд╛рджреА рдорд┐рдбрд▓рд╡реЗрдпрд░ (devtools, thunks) рдХреЗ рд╕рд╛рде
рд╣рд╕реНрддрд╛рдХреНрд╖рд░ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдХрд┐ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ
Redux рдХреЛрд░ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП
рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВред
2.рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд╕рд╛рде Redux рдЬреЛрдбрд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ
"рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реНрдЯреЛрд░" рдмрдирд╛рдиреЗ-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдирд╡рд╛рдЧрдВрддреБрдХ
2 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдЕрдк рдПрдВрдб рд░рдирд┐рдВрдЧ Redux рдРрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдмрд╣реБрдд, рдмрд╣реБрдд рджреВрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/reactjs/redux/issues/2295#issuecomment-287806663 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AFUmCQYkUwjkCugevDBWC8TOu0HhWJTnks5rnqMWgaJpZM4MhnVF
.
рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ combineReducers
рддрд╛рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд░реЗрдбреНрдпреВрд╕рд░ рд╣реЛ (рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЙрдХреНрд╕ рдЙрд░реНрдл тАЛтАЛтАЛтАЛ"рд╕реНрд▓рд╛рдЗрд╕ рд░реЗрдбреНрдпреВрд╕рд░" рдХреЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░рд┐рдВрдЧ рд░реЗрдбреНрдпреВрд╕рд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ)ред рдЗрд╕рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рддрд░реНрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдиреЗ рдЖрдо рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рд╣рдорд╛рд░реЗ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдЙрднрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреАред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реЗрдбреНрдпреВрд╕рд░ рдЙрдирдХреЗ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдорд╛рди рдереЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ (рд░реЗрдбреНрдпреВрд╕рд░ рдХрд╛рд░рдЦрд╛рдиреЛрдВ?)
const { makeIndicator, makePayloadAssignor } from '../shared/reducers';
const searchModule = combineReducers({
searching: makeIndicator(c.SEARCH),
results: makePayloadAssignor(c.SEARCH_RESPONSE, [])
});
рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд▓рд╛рдЗрд╕ рд░реЗрдбреНрдпреВрд╕рд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╡реЗ рд╣рдорд╛рд░реЗ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдореВрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛..."рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдореЗрдВ a . рд╣реИ
рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ", рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗред
Redux рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЗрд╕рдореЗрдВ рдЬрд╛рджреБрдИ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рджреЛрдкрд╣рд░ 12:44 рдмрдЬреЗ, рдорд╛рд░реНрдХрд╕ рдХреЛрдПрддреНрдЬрд╝реА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрдВрдмрд╛рдЗрди рд░реЗрдбреНрдпреВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдПрдХ рдореЗрдВ рдЯреБрдХрдбрд╝рд╛ рдХрд░ рд╕рдХреЗ
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд░реЗрдбреНрдпреВрд╕рд░ рд╣реИ (рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ
рдбреЙрдХреНрд╕ рдЙрд░реНрдл тАЛтАЛ"рд╕реНрд▓рд╛рдЗрд╕" рдХреЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░рд┐рдВрдЧ рд░реЗрдбреНрдпреВрд╕рд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ
рд░реЗрдбреНрдпреВрд╕рд░")ред рдЗрд╕рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рддрд░реНрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡рд┐рдЪ
рдХрдерди рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реИрдВред рдЗрд╕рдиреЗ рдЖрдо рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рдЙрднрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреА
рд╣рдорд╛рд░реЗ рдХреЛрдб рдмреЗрд╕ рдкрд░ред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реЗрдбреНрдпреВрд╕рд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдорд╛рди рдереЗ
рдЙрдирдХреЗ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ
рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп (рд░реЗрдбреНрдпреВрд╕рд░ рдлреИрдХреНрдЯреНрд░рд┐рдпрд╛рдВ?)
рд╣рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ:const { makeIndicator, makePayloadAssignor } '../shared/reducers' рд╕реЗ;
рдХреЙрдиреНрд╕реНрдЯ рд╕рд░реНрдЪ рдореЙрдбреНрдпреВрд▓ = рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рд░реЗрдбреНрдпреВрд╕рд░ ({
рдЦреЛрдЬ: рдореЗрдХрдЗрдВрдбрд┐рдХреЗрдЯрд░ (рд╕реА.рд╕рд░реНрдЪ),
рдкрд░рд┐рдгрд╛рдо: makePayloadAssignor(c.SEARCH_RESPONSE, [])
});рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд▓рд╛рдЗрд╕ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛, рдЬрд╣рд╛рдВ рд╡реЗ рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╣рдорд╛рд░реЗ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ред-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/reactjs/redux/issues/2295#issuecomment-287820595 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AACourLpL5--NJiRzrWmKFJ31cl5DXJrks5rnqzxgaJpZM4MhnVF
.
рдореИрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдХреБрдЫ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдбрдХреНрд╕ рдкреИрдЯрд░реНрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдореЗрд░реЗ рд╕рд╛рдерд┐рдпреЛрдВ рдФрд░ рдореИрдВрдиреЗ 1.5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд▓рдЭрди рдореЗрдВ рдереЗ: рд░реЗрдбрдХреНрд╕ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╡реЗрдВрдЯ-рд╕реЛрд░реНрд╕рд┐рдВрдЧ рд╣реИ, рдХрд┐ рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдИ рд░реЗрдбреНрдпреВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреВрд░реА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЗрдХрд╛рдИ рд╣реЛ рд╕рдХрддреА рд╣реИ рди рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдЖрдИрдбреА , рдХрд┐ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рд╣реИрдВ рдФрд░ рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ - рд▓рд┐рдЦреЗрдВ, рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ, рдЖрджрд┐ред рд╣рдордиреЗ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпрд╛рдВ рдХреАрдВ - рд░рд┐рдореЛрдЯ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рд╡рд┐рдзрд┐ рдХреЙрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ; рд╡рд┐рд╢рд╛рд▓ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рдП рдФрд░ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ "рдЬрдирд░реЗрдЯрд░ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ" (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рд╢рд╛рдирджрд╛рд░ рд╣реИ!), рд╡рд┐рд╢рд╛рд▓ рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рд▓рдВрдмреА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдФрд╕рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд░рдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рднреА рд╣реИред рдЖрдЬ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣ Redux рдкрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдореВрд▓реНрдпрд╡рд╛рди рд╡рд┐рд╖рдп рд╣реИред
рдпрд╣ рдореВрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛..."рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдореЗрдВ a . рд╣реИ
рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ", рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗред
Redux рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЗрд╕рдореЗрдВ рдЬрд╛рджреБрдИ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА, @blocka! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
Redux рдЕрдкрдиреЗ рдиреНрдпреВрдирддрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрд╛рд░рдг рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ-рдИрд╢ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рдврд╛рдВрдЪреЗ" рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ (рдиреНрдпреВрдирддрдо рдХреЛрдб, рдиреНрдпреВрдирддрдо рд╕рд┐рджреНрдзрд╛рдВрдд)ред
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп "рдлреНрд░реЗрдорд╡рд░реНрдХ-рд╡рд╛рдИ" рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрджрдд рд╣реЛрддреА рд╣реИред рдЬрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдПрдХ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдирд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреБрдЦрдж рд▓реЗрдХрд┐рди рд╕рдЪ рд╣реИред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Redux рдХреЛ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ Redux рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рди рдХрд░реЗрдВред @gaearon рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд░ рд╕рдордп рдпрд╣ рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ "рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛"? рдПрдВрдЧреБрд▓рд░ Redux рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд░рддрд╛ рд╣реИред рд░реЗрдбрдХреНрд╕ рдХреНрдпреЛрдВ? рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЙрддреНрддрд░ рд╢рд╛рдпрдж рд╣рдо рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ?
рдореИрдВрдиреЗ рдХрд▓ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛: рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдпрд╛ рд░реЗрдбрдХреНрд╕ рдкрд░ рджреЛрд╖ рди рджреЗрдВ ред рдмреЗрд╢рдХ рдореИрдВ рдЗрд╕ рд╕рдм рдореЗрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред
рдПрдХ рдЙрдиреНрдирдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдореВрд░реНрдд рдкрд░рддреЗрдВ рд╣реЛрдиреЗ рдХреА рдорд┐рд╕рд╛рд▓ рд╣реИред рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ, Tensorflow рдиреЗ Keras рдХреЛ рдХреЛрд░ API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдпрд╛: http://www.fast.ai/2017/01/03/keras/ред
TensorFlow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ TensorFlow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рдирд╣реАрдВ рд╣реВрдБ; рдЬрдмрдХрд┐ рдХреЗрд░рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ TensorFlow рдХрд╛ API рд╡рд░реНрдмреЛрдЬрд╝ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ Keras рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ API рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрднреА рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдкрд╣рд▓реА рдХреБрдЫ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рдж рдореИрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ TensorFlow рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╢рд░реНрдорд┐рдВрджрд╛ рдерд╛ред рдпрд╣ рдмрд╣реБрдд рднрджреНрджрд╛ рдФрд░ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдореЗрд░реА рдЕрд╕рдлрд▓рддрд╛ рдереАред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Redux рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдердо рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рдорд╛рди рдЕрдиреБрднрд╡ рд╣реИред Tensorflow
рдХреЛ Redux
рдФрд░ Keras
рдХреЛ Jumpstate
рдмрджрд▓реЗрдВред Redux рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╡рддрдГ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡реЗ рдПрдВрдЧреБрд▓рд░ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдмреВрдЯрдХреИрдВрдк рдореЗрдВ рд░рд┐рдПрдХреНрдЯ + рд░реЗрдбрдХреНрд╕ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦрдиреЗ рд╕реЗред рдЬрдмрдХрд┐ Redux рдХреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдВрднрд╡рддрдГ 80% рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рдБ, рдЕрдЧрд░ redux рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛, рддреЛ рд╣рдо рдпрд╣ рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗред рднрд▓реЗ рд╣реА redux рдЙрдкрдпреЛрдЧреА рд╣реЛ рдпрд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдзреНрд╡рдирд┐, рд▓реЛрдЧ рддрдм рднреА "рдмреБрд░рд╛" рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реАрдЦ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпреЗ рднрд╛рд╡рдирд╛рдПрдБ рдорд╛рдиреНрдп рд╣реИрдВред
рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рд╕рднреА redux рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВ -- рдмреЗрд╢рдХ рд╣рдо redux рд╕реЗ рдЦреБрд╢ рд╣реИрдВ; рд╣рдордиреЗ рдЗрд╕рдХреЗ рджрд░реНрд╢рди рдХреЛ рдЖрддреНрдорд╕рд╛рдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рд╣рдо "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╡реЗ рджрд░реНрд╢рдХ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдпрд╣ рдзрд╛рдЧрд╛ рдкрд░реЛрд╕рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реИред рд╣рдореЗрдВ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ redux рдореЗрдВ рдЖ рд░рд╣реЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдкрд╣рд▓реА рдмрд╛рд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рднреА рдЖ рд░рд╣реЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдпрд╣рд╛рдВ рдПрдХ рд╢рд┐рдХрд╛рдпрдд рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдХреНрд╕рд░ рд░реЗрдбрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирддрд╛ рд╣реВрдВ (рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдкрдереНрд░реЗрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ): рдпрд╣ рдХреЗрд╡рд▓ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕, рд░реЗрдбрдХреНрд╕-рдердВрдХ, рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдЗрддреНрдпрд╛рджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА "рдЖрд╡рд╢реНрдпрдХрддрд╛" рд╣реИред .
рдХреНрдпрд╛ рдЖрдкрдХреЛ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЪрдореБрдЪ рдЙрди рд╕рднреА рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдирд╣реАрдВред
рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЗрдбрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдпрд╛ рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ? рд╣рд╛рдВред
рдХреНрдпрд╛ package.json
рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИ? рдирд╣реАрдВ рд╡рд╛рдХрдИ рдореЗрдВ рдирд╣реАрдВред
рдХреНрдпрд╛ package.json
рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ? рдмрд┐рд▓реНрдХреБрд▓ред
рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рд╕реНрд╡рдпрдВ рдХреЛ рд╡рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ ( create-redux-app
рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА) рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╣рд╛рде рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ RTFM рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
рднрд▓реЗ рд╣реА redux рдЙрдкрдпреЛрдЧреА рд╣реЛ рдпрд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдзреНрд╡рдирд┐, рд▓реЛрдЧ рддрдм рднреА "рдмреБрд░рд╛" рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реАрдЦ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпреЗ рднрд╛рд╡рдирд╛рдПрдБ рдорд╛рдиреНрдп рд╣реИрдВ
рдмрд┐рд▓реНрдХреБрд▓ред рд▓реЗрдХрд┐рди рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдХрднреА рдирд╣реАрдВ рд╕реБрдиреЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдЖрдк рдХреЗрд╡рд▓ рд╡рд╣реА рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрд╕реЗ рдкреНрд░рд╢реНрди рдкреВрдЫрддреЗ рд╣реИрдВ, рдпрд╛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ/рд░рд┐рдПрдХреНрдЯрдлреНрд▓рдХреНрд╕ рд╣рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдЬреЛ рдХрднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рдХреЛ рднреА рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдорд╛рдВрдЧрдирд╛ рд╣реИ... рдФрд░ рдХреБрдЫ рдареАрдХ рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЙрдирдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЦрд░рд╛рдм рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ... рдЕрдиреНрдпрдерд╛ рд╡реЗ рдХрд░реЗрдВрдЧреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдордВрдЪреЛрдВ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рдФрд░ рдпрд╣ рд╢реБрджреНрдз рд╢реВрдиреНрдп рд▓рд╛рдн рд╣реЛрдЧрд╛ред
Redux рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реБрдЖред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА :)
рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рд╕реНрд╡рдпрдВ рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ (рдХреНрд░рд┐рдПрдЯ-рд░реЗрдбрдХреНрд╕-рдРрдк рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА) рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред рдпрд╣ рддрд░реНрдХ рджреЗрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рд╣рд▓ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рднреА рдереЗ, рдЬрдм рд▓реЛрдЧ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЕрднрд┐рднреВрдд рд╣реЛрдиреЗ рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рдереЗред create-react-app
рдЗрд╕ рд╕рдм рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ _рдЦреБрдж_ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрднреА рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЦрд░реАрджрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ Redux рд╕реНрд╡рдпрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдпрд╛ рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╕реЗ рднрд╛рдЧрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ Redux рдХреЛрд░ рдореЗрдВ redux-thunk
рдЬреИрд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред
рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬрд┐рд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реВрдВ, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реАрдзреЗ рдореВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" рдпрд╛ "рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдореВрд░реНрдд рдкрд░рдд" рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдпрд╛ рд╕реАрдПрд▓рдЖрдИ рдЙрдкрдХрд░рдг рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА create-react-app
ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬрдВрдкрд╕реНрдЯреЗрдЯ/рдЬрдВрдкрд╕реВрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдЭрдВрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ред
рдЯреАрдПрд▓; рдбреЙ:
Redux рд╕реАрдЦрдирд╛ рдХрдард┐рди рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдирд┐рдореНрди-рд╕реНрддрд░ рд╣реИред рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 90% рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдХреНрд╖рд┐рдд рдПрдХ рдорд╛рдирдХреАрдХреГрдд рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд░реЗрдбрдХреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдореБрджрд╛рдп рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдпрд╣ рдПрдкреАрдЖрдИ рдХреИрд╕реЗ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпрд╛ рдореЗрдЯрд╛ рдХреЛрдб) рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
Redux рдХреЛ рдЧреЗрдЯ рд╕реЗ рдмрд╛рд╣рд░ рд╕реАрдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░, рдмрд╣реБрдд рдмрд╛рд░, рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдЬреИрд╕реЗ рдХрд┐ async рд▓реЙрдЬрд┐рдХ, рд╕рд╛рдЗрдб-рдЗрдлреЗрдХреНрдЯреНрд╕, рдХрд╕реНрдЯрдо рдорд┐рдбрд▓рд╡реЗрдпрд░, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореИрдВрдиреЗ рдЦреБрдж рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛ рдЬрдм рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирдпрд╛ рдерд╛ред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реАрдЦрдиреЗ рдХреЗ рдХреБрдЫ рд╣реА рджрд┐рдиреЛрдВ рдореЗрдВ рдореБрдЭреЗ рддреБрд░рдВрдд рд░реЗрдбрдХреНрд╕ рд╕реАрдЦрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИред рдпрд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдмрд╣реБрдд рдЕрдиреБрднрд╡реА рдФрд░ рдиреМрд╕рд┐рдЦрд┐рдП рджреЛрдиреЛрдВ рджреЗрд╡реЛрдВ рд╕реЗ рдЖрдИ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдерд╛ (рдпрд╛ рдХрд░ рд░рд╣реЗ рдереЗ)ред рдЗрд╕реЗ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдореНрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ (рдЪрд▓реЛ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдЧреЗрдЯ рдХреЛ рдЗрд╕рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ ЁЯШЙ )ред рдпрд╣ рд╕рдм рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдбрдХреНрд╕ рдЕрджреНрднреБрдд рд╣реИред
рдореИрдВрдиреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЛ рдорд╛рд░рд╛ рдФрд░ рдорджрдж рдорд╛рдВрдЧрдиреЗ рдкрд░ рддреБрд░рдВрдд рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ Redux рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг "Redux рдХрдард┐рди рд╣реИ, рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рдирд┐рдореНрди-рд╕реНрддрд░ рдХреА рд╣реИрдВ, рдПрдкреАрдЖрдИ рдмрдВрдж рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢рдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ" рдпрд╣ред"
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рднреА рд╕рд╛рдерд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣реА рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА рд╡рд╣ рдерд╛ рдЬрд┐рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рдПрдХ рдЕрдореВрд░реНрдд рдкрд░рдд рдмрдирд╛рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХреА, рдЬреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдФрд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХреБрдЫ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдПрдЧреА рдЬреЛ рдХрд┐ redux рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдерд╛ред
рдореБрдЭреЗ рдХрд╕реНрдЯрдо рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдореИрдВ рдореИрдкрд┐рдВрдЧ рдПрдХреНрд╢рди рдФрд░ рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рд░реЗрдбреНрдпреВрд╕рд░ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред
рдЗрд╕рдиреЗ рд╢рд╛рдирджрд╛рд░ рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдиреЗ рдореЗрд░реЗ рдмрд╛рдХреА рд╕рд╛рдерд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рджреЗрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдбрдХреНрд╕ рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рдЗрд╕реА рддрд░рд╣ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рдереЗред
рд╣рдордиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрдирдд рдпрд╛ "рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░" рд░реЗрдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ 90% рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдореЗрдВ рд╕рднреА рдЖрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрднреА рднреА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдХреЗ рд▓рд┐рдП "рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░" рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рд░реНрдорд╛рддрд╛, рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЖрдпрд╛рдд рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП ... рдмрд╣реБрдд рдХреБрдЫ рд╣реИ) , рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХрд╛ рдорд╛рд░реНрдЧ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ redux рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд░ рд╕рдордп рдореБрдЭреЗ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рд╕реНрд▓реИрдХ рдСрд░реНрдЧ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдиреЗ рдХрд┐рд╕реА рдХреЛ рд░реЗрдбрдХреНрд╕ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреАред
рд╡реЗ рд▓реЛрдЧ рдЖрдЬ рднреА рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЖрдЬ рднреА рдЗрд╕рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдЙрдирдХреЗ рдкрд╛рд╕ рдЬреЛ рдЕрдиреБрднрд╡ рдерд╛ рд╡рд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛, рдФрд░ рд╡реЗ рдХрд┐рддрдиреА рдЬрд▓реНрджреА рд░реЗрдбрдХреНрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдЙрддреНрдкрд╛рджрдХ рдмрдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:
рдЗрд╕рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдмреЗрд╣рддрд░ рдбреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рддрдирд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдвреЗрд░ рд╕рд╛рд░рд╛ред рдЬрдм Redux рдкреНрд░рд▓реЗрдЦрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП AngularJS 1 рдХреЗ рдбреЙрдХреНрд╕ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ AngularJS рдХреА рддрд░рд╣, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ рд▓реЗрдХрд┐рди AngularJS рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ "рд╢реЛ, рдбреЛрдВрдЯ рдиреЙрдЯ" рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддрд╛ рд╣реИред
Redux рдХреЗ рдбреЙрдХреНрд╕ рдХреЛрдб рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрдЬрд╛рдп рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ "рдпрд╣рд╛рдВ рдХреЛрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ; рд╣рдо рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдХреНрд╖рдгред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рднреАрддрд░ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЬреЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдЯреЛрдбреЛ рд▓рд┐рд╕реНрдЯ рдРрдк рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рд╣реА Redux рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдЙрджрд╛рд╣рд░рдг рд╣реИ - рдЗрд╕реЗ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд┐рддреНрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ @sunjay рдкрд╕рдВрдж рд╣реИ; рдПрдХ рдЬреЛ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдПрдХ рдХреЛ рдЯреВрдбреВ рд╕реВрдЪреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реА рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ - рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рджреГрд╢реНрдп рд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рдХреИрд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВ, рдЖрджрд┐ред рд▓рдВрдмреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдВ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдбреЙрдХреНрд╕ рдХреА рд╡рд╛рдЪрд╛рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдирд╛ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦрдиреЗ рдФрд░ Redux рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ: рдХреГрдкрдпрд╛ рдХреЛрд░ рди рдмрджрд▓реЗрдВред рдЗрд╕рдХреА рдЪрдордХ рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдореЗрдВ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдВрднрд╡рдд: рд╕рдВрдкреВрд░реНрдг рд╕реЗ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдорд┐рддреНрд░рддрд╛ рдФрд░ рдЖрдЧреЗ рдХреА рдЕрдореВрд░реНрддрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдпрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХреЗ рдХреА рднреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд░рд╛рдЬреНрдп рдХрдВрдЯреЗрдирд░ рд╣реИ, рдмрд╕!
рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдЦрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЪрд▓реЛ тЭдя╕П
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдкреИрдХреЗрдЬ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдКрдкрд░ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд╛рджрд┐рдд libs рдмрдирд╛рдХрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рднреА рдпрд╣реА рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдХреЛрд░ рдирд╣реАрдВ рдмрджрд▓рддреЗ, рд╕реБрдВрджрд░ рдХреГрдкрдпрд╛ред
@HenrikJoreteg , рдбрд░реЛ рдордд! рдореИрдВ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдЬрд┐рд╕ рдЪреАрдЬ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдХрднреА рднреА рдореВрд▓ рдХреЛ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реА рдирд╣реАрдВ рд╣реИред рдХреЛрд░ рдлреАрдЪрд░ рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдЦрдбрд╝рд╛ рд╣реИред :)
рдвреЗрд░ рд╕рд╛рд░рд╛ред рдЬрдм Redux рдкреНрд░рд▓реЗрдЦрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП AngularJS 1 рдХреЗ рдбреЙрдХреНрд╕ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ AngularJS рдХреА рддрд░рд╣, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ рд▓реЗрдХрд┐рди AngularJS рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ "рд╢реЛ, рдбреЛрдВрдЯ рдиреЙрдЯ" рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдХрджрдо рд╕рдЪ рд╣реИред рдПрдХ рдмрд╛рдд рдЬрдм Redux рдирдпрд╛ рдерд╛ рд╡рд╣ рдпрд╣ рдерд╛ рдХрд┐ рдбреЙрдХреНрдЯрд░ рд╡рд┐рд░рд▓ рдерд╛, рд▓реЗрдХрд┐рди рдореВрд▓ рдмрд╛рддреЗрдВ рд╡рд╣рд╛рдБ рдереАрдВред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ рдЕрдкрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдЗрддрдирд╛ рд╕рд░рд▓" рдерд╛ред рд▓реЗрдХрд┐рди рдСрдирд▓рд╛рдЗрди рд╕рдВрд╕рд╛рдзрди рдЕрдм "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рддрдХрдиреАрдХ" рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ "рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░" рдФрд░ "рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХрдореА рдЯреВрд▓рд┐рдВрдЧ" рд╣реЛрддрд╛ рд╣реИред рд▓реЛрдЧ рдЕрднрд┐рднреВрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
"рдХрдо рдЕрдзрд┐рдХ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛рдирд╛ рд╣реИ
@Phoenixmatrix , @Sylphony : рддреЛ, рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдбреЙрдХреНрд╕ рд╕реБрдзрд╛рд░ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛?
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ "рд╕реНрдЯрд╛рд░реНрдЯрд░-рд╕реНрдЯреЛрд░" рд░рдЦрдиреЗ рдХреЗ рдКрдкрд░ рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ (2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд╛рдЗрдЯ/рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрднрд╛рдЧ)ред
"рд░реЗрдбрдХреНрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░", рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрдпрд╛рд░реЗ, рд╕рд░рд▓ рдЪрд┐рддреНрд░ рд╣реЛрдВрдЧреЗ, рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдФрд░ рд╢рд╛рдпрдж рдердВрдХреНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрдлреНрд░рдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реНрдЯреЛрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдРрдк рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рд╛рдорд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде "рдЕрдиреНрд╡реЗрд╖рдг" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдореИрдВ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕рд╛рд░рд╛ рд╕рд╛рдорд╛рди рдирд┐рдХрд╛рд▓ рджреВрдВрдЧрд╛ред рдЖрдЬ рдХрд┐рд╕реА рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдПрдХ рдРрдк рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдЯреЛрд░ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕реЗрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрдирдд рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЛ рдмрд┐рдирд╛ рджреЗрдЦреЗ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдмреЗрд╣рддрд░ рдбреЙрдХреНрд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред Redux api рдХреЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдФрд░ рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХреЗ рдХрд╛рд░рдг рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓рд┐рдЦрд╛ рдФрд░ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╡рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп Redux рд╕рдореБрджрд╛рдп рдХреЛ рдЦрдВрдбрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд╕реНрддрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╡рд╣реА рд▓реЗрдЦрдХ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ "Redux рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ"ред рдпрджрд┐ рд╕рдореБрджрд╛рдп рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд░рд▓ рдЕрдореВрд░реНрддрддрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдХреЛрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╣рдж рддрдХ "рдзрдиреНрдп" рд╣реИ, рддреЛ рд╣рд░ рдХреЛрдИ рдЬреАрдд рдЬрд╛рддрд╛ рд╣реИред рдХрдЯреНрдЯрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдЕрдиреНрдп рд▓реЛрдЧ рдПрдХ рдЖрд╕рд╛рди/рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@derekperkins рд╣рдо "рдзрдиреНрдп" рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдо рд╕рд╣рдорддрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рдХреИрд╕реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреМрди рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?
рдореИрдВ рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рд┐рдП рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХреБрдЫ рд▓реЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЦрдВрдбрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ xkcd: https://xkcd.com/927/
рд╣рд╛рдБ, рд░реЗрдбрдХреНрд╕ рдХрд╛ рдореВрд▓ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдПрдХ рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рдЬрд┐рддрдирд╛ рдХрд░реАрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░реЗрдбрдХреНрд╕-рдердВрдХ рдФрд░ рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдмрд╣реБрдд рд╕реАрдорд╛ рд░реЗрдЦрд╛ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рднреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд╝рд░реВрд░рддреЗрдВ рд╣реЛрддреА рд╣реИрдВред
Redux рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдирд╛ "рдореБрдЭреЗ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ" рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ
рд╣реЗрдХ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ (рдХрдИ рджрд░реНрдЬрдиреЛрдВ) рд░реЗрдбрдХреНрд╕ рдРрдкреНрд╕ рд╣реИрдВ рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдРрдкреНрд╕ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рддрдм рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдРрдк рд╣реЛ, рдпрд╛ рдХреБрдЫ рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╡рд╛рд▓реЗ рд╣реЛрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЫреЛрдЯреЗ рднреА рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ CRA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: Babel рдФрд░ Webpack рдФрд░ ESLint рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рд╕реАрдЖрд░рдП рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЙрди рд╕рднреА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓, рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЪреБрдирддрд╛ рд╣реИ рдЬреЛ рд╢рд┐рдХреНрд╖рд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддреА рд╣реИред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ _if рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ_ред
рдпрд╣ рд╣рд░ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реАрдЖрд░рдП рдЙрдиреНрдирдд рдХреЛрдб рд╡рд┐рднрд╛рдЬрди, рдПрдХрд╛рдзрд┐рдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ, рдПрд╕рдПрд╕рдЖрд░, рдпрд╛ рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реАрдЖрд░рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ _do_ рдЕрдиреНрдп рдЯреВрд▓ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЙрдардиреЗ рдФрд░ рддреЗрдЬ рджреМрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ
рдХреЗрд╡рд▓ redux рдФрд░ рдЗрд╕ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░рдд рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ? рдЙрд╕
рдмрд╣реБрдд рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛ рд╡рд╣ рдПрдХ рдЭрдВрдбрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рджреЗрд╡ рдореЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕реАрдЦрдиреЗ рдХреЗ рдЕрд╡рд╕рд░реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред рдореЗрдВ
рдЗрд╕ рддрд░рд╣ рдЕрдореВрд░реНрдд рдкрд░рдд рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╢рд┐рдХреНрд╖рдг рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред
рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рдХреЛ рд╢рд╛рдо 4:14 рдмрдЬреЗ рдорд╛рд░реНрдХ рдПрд░рд┐рдХрд╕рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓рдХрд┐рдЯ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ
рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ CRA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ
рдмреЗрдмреЗрд▓ рдФрд░ рд╡реЗрдмрдкреИрдХ рдФрд░ ESLintред рд╕реАрдЖрд░рдП рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдПрдХрд▓, рд░рд╛рдпрд╢реБрджрд╛ рдСрдлрд░ рдХрд░рддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдЙрди рд╕рднреА рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛, рдФрд░ рдпрд╣
рдЬрд╛рдирдмреВрдЭрдХрд░ рдРрд╕реА рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЪреБрдирддрд╛ рд╣реИ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддреА рд╣реИрдВ
рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ редрдпрд╣ рд╣рд░ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реАрдЖрд░рдП рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛
рдЙрдиреНрдирдд рдХреЛрдб рд╡рд┐рднрд╛рдЬрди, рдПрдХрд╛рдзрд┐рдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ, рдПрд╕рдПрд╕рдЖрд░, рдпрд╛ рд╕рд╛рдорд╛рди рдЬреИрд╕реЗ рд╕реЗ рдирд┐рдкрдЯреЗрдВ
рд╡рд╣ред рд╕реАрдЖрд░рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдзрд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/reactjs/redux/issues/2295#issuecomment-287914805 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AFUmCactFzsw7etmGGP8MFK6kfNaOzTJks5rnvorgaJpZM4MhnVF
.
@sunjay рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдХреМрди рд╕рд╛ xkcd рд▓рд┐рдВрдХ рдерд╛ рдЬреЛ рдмрд┐рдирд╛ рдХреНрд▓рд┐рдХ рдХрд┐рдП рднреА рдерд╛ред :)
рдореИрдВ @markerikson рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдпрд╣ рд╣рд░ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╣рд░ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЛрд░ рд░реЗрдбрдХреНрд╕ рджреЗрд╡реЛрдВ рдХрд╛ рдПрдХ рд░рд╛рдп рд╡рд╛рд▓рд╛ рдмрдпрд╛рди рд╣реИ, "рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ"ред рдРрд╕реЗ рд╕рдордЭрджрд╛рд░ рдбрд┐рдлреЙрд▓реНрдЯ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджрд╛рдВрд╡ рд▓рдЧрд╛рдКрдВрдЧрд╛ рдХрд┐ рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ 80% рджреЗрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред
рдпрд╣ рдХреЛрд░ Redux рдкрд░ рд▓рд┐рдЦрд╛ рд╣реЛ рднреА рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╣реАрдВ рднреАред рдореБрдЭреЗ рдЕрдм рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ рдЬреЛ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред
Redux рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдЦрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЕрдореВрд░реНрдд рдкрд░рддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдХреНрд╕рд░ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдореВрд░реНрдд рдкрд░рдд рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рд╕реА рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдореИрдВ рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдореЗрд░реЗ Tensorflow рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рдПрдкрд┐рд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдХреЗрд░рд╕ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, Redux рдмрдирд╛рдо рдЬрдореНрдкрд╕реНрдЯреЗрдЯ (рдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреЛ рднреА рдЕрдореВрд░реНрддрддрд╛ рдЖрддреА рд╣реИ) рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЛрдЭрд┐рд▓ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрдЪреНрдЪреЗ Redux рдХреЗ рд╕рднреА рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛:
mapStateToProps
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛)редрдореВрд▓ рд░реВрдк рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Redux рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдмреНрд░рд╛рдВрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИред
рд╕рд╛рде рд╣реА, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдкрд░ рддреБрдо рдХрд░ рд╕рдХрддреЗ рд╣реЛред
рдореЗрд░реЗ рд▓рд┐рдП, рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЬрдм рдореИрдВ redux
рд╕реАрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ src рдХреЛрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП 2 рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ, рдлрд┐рд░ api
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд░ рд╡рд┐рд╡рд░рдг рдбреЙрдХреНрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдФрд░ рдлрд┐рд░, "рд░рд╛рдЬреНрдп рдбрд┐рдЬрд╛рдЗрди", "рд░реЗрдбреНрдпреВрд╕рд░ рдбрд┐рд╡реАрдЬрди", "рдорд┐рдбрд▓рд╡реЗрдпрд░ рдбрд┐рдЬрд╛рдЗрди", "рдПрд╕рд┐рдВрдХ рд╕реЙрд▓реНрдпреВрд╢рди" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ ... рдЕрдзреНрдпрд╛рдп рднреА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдореИрдВ рдЕрдЧрд▓реЗ рдорд╣реАрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ redux
рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП src рдХреЛрдб рдкрдврд╝рдирд╛ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдХрджрдо рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА, рдЖрдк redux
рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рд╕рдордЭ рдФрд░ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ async рд╕рдорд░реНрдердиред
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ redux-thunk, redux-saga
ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ async рд╕рдорд░реНрдерди
рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдмрд╕ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдХреБрдЫ рдмреЗрд╣рддрд░ рдЦреЛрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ 0.5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдХреЙрд▓рдмреИрдХ/рд╡рд╛рджрд╛ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ рдкреНрд░реЗрд╖рдг рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрд╕реЗ рддреБрд░рдВрдд рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред рд▓реЗрдХрд┐рди рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@gaearon рдХреА рдЯрд┐рдкреНрдкрдгреА рдПрдХрджрдо рд╕рд╣реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡реАрдк рдХрд┐рддрдирд╛ рд╡реНрдпрд╛рдкрдХ рд╣реИред рдореИрдВ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд Redux 2.0 рдХреА рд╕рдЯреАрдХрддрд╛ рдФрд░ рднрд╡реНрдпрддрд╛ рдФрд░ рд╢рдХреНрддрд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрдпрд╛рд░ рдФрд░ рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рднреА рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рд╕реБрдзрд╛рд░ рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ!
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рдЖрдХрд░реНрд╖рдХ рд▓рдЧрддрд╛ рд╣реИред
рдореЗрд░рд╛ рдЕрдкрдирд╛ Redux рдЕрдореВрд░реНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд╛рд░реЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рдореЗрдВ, рдЙрдирдХреЗ рдПрдХреНрд╢рди рдХреЛрдб рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд░рдорд╛рдгреБ рд░реЗрдбреНрдпреВрд╕рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдореЗрдВ, рдореБрдЭреЗ рд╕рд┐рдВрдЧрд▓-рд░реЗрдбреНрдпреВрд╕рд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдореЗрд░рд╛ рдЕрдкрдирд╛ 90% рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реАрдЖрд░рдП рдХреЗ рд╕рдорд╛рдиред
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрджрд┐ рдбреИрди рдиреЗ Redux 2.0 рдХреЛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рддреЛ рдореИрдВ рдЙрд╕рдХреЗ рдКрдкрд░ рднреА рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реВрдВрдЧрд╛!
@jbellsey Redux рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдРрдк рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорд╣рд╛рди рд╣реИ - рд▓реЗрдХрд┐рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рджрд╛рдпрд░реЗ рдореЗрдВ - рдЖрдкрдХреЗ рдкрд╛рд╕ redux рд╕реНрдЯреЛрд░ рдХреЗ рдЕрдирдВрдд рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд░реЗрдбрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рд╕реЗ рд▓рд╛рдн рдЙрдард╛
рд╣рдо рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдРрдк рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ ред рдЖрд░ рдПрд▓рд┐рдпрдмрд▓ рдП рдИ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдбреА рдПрд▓реАрд╡реЗрдб рдпреВ рдирд┐рдлрд╛рдЗрдб рдИ рдПрдХреНрд╕ рдЯреЗрдиреНрд╕рд┐рдмрд▓: рд╣рд╛рд░реНрдЯ:
рдХреЛрдИ рднреА рдЧреНрд▓реЛрдмрд▓реНрд╕ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рднреА рдХреЛ рдПрдХ рдЪрд╛рд╣рд┐рдП: tm:
рдХреГрдкрдпрд╛, рдЕрднреА рдХреЗ рд░реВрдк рдореЗрдВ redux рдХреЛ рд╕рд░рд▓ рд░рдЦреЗрдВред рдпрд╣ рдкреИрдЯрд░реНрди рд╣реИред рдХреБрдХрдмреБрдХ рд╣рдореЗрд╢рд╛ рд▓рдЧрднрдЧ :100 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЙрдареЗрдЧреА:
@markerikson рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛? рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЕрджреНрднреБрдд рд╡рд┐рдЪрд╛рд░ рдЖрдП рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ 48 рдШрдВрдЯреЗ рд╣реБрдП рд╣реИрдВ
рдореЗрд░реЗ рд▓рд┐рдП, рдореИрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдердВрдХреНрд╕ рдпрд╛ рд╕рд╛рдЧрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рддрдХрдиреАрдХ рд╕реАрдЦреЗрдВред
рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рд╛рджреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рддреЛ Redux рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣ рд╕рдм Redux рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ (рдореИрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ HTTP рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛)ред I/O рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ Redux рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореЗрд░реЗ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рд░рдЦрддрд╛ рд╣реИред рдЯрд╛рдЗрдк рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╣рдореЗрд╢рд╛ store.dispatch(actionObject)
ред рдХреЛрдИ рдкреНрд░реЗрд╖рдг рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реЛрдЧреА)ред
@tannerlinsley : рд╣рд╛рдБ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдУред
рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИ: рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЯрди рд╕рд╛рдорд╛рди рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рд╕реНрд╡рдпрдВ рдереЛрдкрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ Redux рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЬрд┐рдирдХреА рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдПрдХ рдкреНрд░рдореБрдЦ рдбреЙрдХреНрд╕ рд╕реБрдзрд╛рд░ рдпрд╛ рдПрдХ рдирдпрд╛ рдЯреВрд▓рдХрд┐рдЯ рдмрдирд╛рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рд╕реЗ рдмрд╣реБрдд рдХрдо рдирд┐рдкрдЯрддрд╛ рд╣реВрдВред рдЦрд░реЛрдВрдЪ
рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрди рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдФрд░ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред (рд╣рд░ рдУрдПрд╕рдПрд╕ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рдкреНрд░рд╕рд┐рджреНрдз рдЕрдВрддрд┐рдо рд╢рдмреНрдж... :))
рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рд╛рджреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рддреЛ Redux рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рдореИрдВ рдпрд╣реА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ!
reselect
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛редcomponentDidMount
рд╣реБрдХ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдКрдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИFWIW, рдореИрдВ D3.js (рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ) рдХреЗ рд╕рд╛рде Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг d3-рдШрдЯрдХ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред
рд░рд┐рдПрдХреНрдЯ рд░реЗрдбрдХреНрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдпрд╛рдж рдЖрддреА рд╣реИ connect
ред @gaearon рдХреА рдЙрдкрд░реЛрдХреНрдд рд░реВрдкрд░реЗрдЦрд╛/рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореБрдЭреЗ рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, mapStateToProps
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛"ред
рдЖрдк рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ тАФ рдЬреИрд╕реЗ рджреГрд╢реНрдпред рдЗрд╕реЗ рд╕рдорд░реНрдкрд┐рдд рд░реЗрдбреНрдпреВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВ - рдлрд┐рд░ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ред
рд╣рд╛рдБ, рдЯреНрд╡рд┐рдЯрд░ рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░ рдореЗрдВ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ - рдЙрдирдХреЗ рдкрд╛рд╕ entities
рд╢рд╛рдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдореИрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЖрдИрдбреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдпрд╛рдиреА timeline
рджреЗрдЦреЗрдВ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЦреНрдп рдлрд╝реАрдб рд╣реИ рджреЗрдЦреЗрдВ рдХрд┐ рдХреМрди рд╕реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рд╕рдВрджрд░реНрдн рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рд╣реИред
рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рдлреИрдХреНрдЯрд░реЛрдВ рдореЗрдВ рдореИрдВ рдпрд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрддреНрдпрдзрд┐рдХ рдЧрддрд┐рд╢реАрд▓ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ ... рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓ рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ 2 рд╕реНрдерд╛рдиреЛрдВ (рдпрд╛ рдЕрдзрд┐рдХ) рдХреЛ рдЕрдХреНрд╕рд░ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
@stefensuhat рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджрдо рдкрд░ Redux рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рддреЛ рдореИрдВрдиреЗ async рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдорд┐рд╕ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЖрдк рдЗрд╕реЗ https://github.com/iddan/delux рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
@gaearon рдЖрдкрдХреА рд╕реВрдЪреА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВ! рд╣рдо рдЬрд┐рд╕ рд╕рдВрдЧрдарди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ 90% рд╕реВрдЪреА рдХреЗ рдмрд╛рдж рд╣рдо рдПрдХ рд░реЗрдбрдХреНрд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ рднреА, рдмрддрдЦ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП)ред рдпрд╣ рдЗрд╕ рд╕рдордп рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рд▓реАрдЬрд╝ рд╣реИ, рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ-рддреИрдпрд╛рд░ред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛!
@markerikson @tannerlinsley
рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд░реЗрдкреЛ рдореЗрдВ рдЬреАрдердм рдореБрджреНрджреЛрдВ рдХреЛ рдмрдирд╛рдПрдВред рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрди рдореБрджреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА redux рдХреЗ рд╕рд╛рде рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдЪреАрдЬрд╝ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪрд░реНрдЪрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИред
рдЗрди рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╣рдХреАрдХрдд рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рднрд╛рд░ рд╣рдо рд╕рднреА рдкрд░ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдорд╛рд░реНрдХ рдиреЗ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХреА, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЙрдирд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред :)
рд╣рд╛рдБ, @gaearon рдХреА рд╕реВрдЪреА рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬрд╝реЗрдВ рд╣реИред рдЗрд╕рд╕реЗ рд╕реАрдзреЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЧреБрдордирд╛рдореА рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдХрд┐рдВрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░рд╡рд╛рд╣ рдХреЗ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкреВрд░реНрдг рдкрд░рдд рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдкрд░ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдлрд┐рд░ рд╕реЗ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реНрдЯреЛрд░ рдХреЗ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдирд╛;))
рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, рдЬрдм рдХреЛрдИ рдкреВрд░реА рд╕реВрдЪреА рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд░реЗрдбрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рднреА рдЕрдиреНрдп рдЯреВрд▓реНрд╕ рдФрд░ рдврд╛рдВрдЪреЗ рдореМрдЬреВрдж рд╣реИрдВред рд░рд┐рдПрдХреНрдЯ/рд░реЗрдбрдХреНрд╕ рдХреЗ рдкрд╛рд╕ рд╡реИрдирд┐рд▓рд╛ рдлреНрд▓рдХреНрд╕ рдкрд░, MobX рдкрд░, VueJS рдкрд░ рдФрд░ рдЗрд╕рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░, рдХреЛрдгреАрдп рдкрд░ рд▓рд╛рднреЛрдВ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕реЗрдЯ рд╣реИред рд╕рдореБрджрд╛рдп рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╢рд╛рдпрдж рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓рд╛рднреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ @gaearon рдХреА рд╕реВрдЪреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ), рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛ рднреА рдкрд░рдд рдмрдирд╛рдИ рдЧрдИ рд╣реИ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдорд╛рдиреА рди рд╣реЛред рдЯрд╛рдЗрдо рдЯреНрд░реИрд╡рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ, рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдЖрджрд┐ рдЬреИрд╕реА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдХрд╣реАрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдореИрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ: рдпрд╣ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдХрд░реНрд╖рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд░реЗрдбреНрдпреВрд╕рд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдиреЗ MobX рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред
@Phoenixmatrix рд╣рд╛рдБ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ redux рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Redux рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдореМрдЬреВрдж рд╣реИ рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕реЗ рдлреНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдмрдбрд╝реА рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдХрдард┐рдирд╛рдИ рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдирдП рдкреИрдЯрд░реНрди рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рд▓реЛрдЧ рдЙрд╕ рдХрдард┐рдирд╛рдИ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ, рдпрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЯреНрд░реЗрдбрдСрдл рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдмрдбрд╝реА рддрд╕реНрд╡реАрд░ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рд╢рд╛рдорд┐рд▓ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЬрдм Redux рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧ (рдореБрдЭреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЬрд╣рд╛рдВ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдереЗ, рдФрд░ @gaearon рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рд╛ рдФрд░ рдЯреВрд▓рд┐рдВрдЧ/рдбреЗрдореЛ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рди рдХреЗрд╡рд▓ рд╕рдордп-рдпрд╛рддреНрд░рд╛ рдХреЗ рдХрд╛рд░рдг, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рднреА рдХрд┐ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЬрд╣рд╛рдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирдИ рдирд╣реАрдВ рд╣реИ рдФрд░ рддреБрд░рдВрдд рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдорд╣рд╕реВрд╕ рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ (рдФрд░ рдлреНрд▓рдХреНрд╕ рднреА) рд╢реБрд░реВ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд░реНрд╖рдг рдорд┐рд▓рд╛ред
рд▓реЛрдЧ Redux рдХреЛ рдПрдХ рдирдП рдЪрдордХрджрд╛рд░ рдЦрд┐рд▓реМрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ)ред рдлрд┐рд░ рднреА Redux рдореЗрдВ рдХреБрдЫ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЙрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдПрдХ рд╕реБрдВрджрд░ рддрд░реАрдХреЗ рд╕реЗ рдлреНрд░рдВрдЯрдПрдВрдб рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИред Redux рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдкреИрдЯрд░реНрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо, рдИрд╡реЗрдВрдЯ-рд╕реЛрд░реНрд╕ рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдбреЛрдореЗрди-рдЪрд╛рд▓рд┐рдд-рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрдирдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛рд▓реЗ рд▓реЛрдЧ Redux рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭреЗрдВрдЧреЗред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд▓реЛрдЧ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЪрд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдФрд░ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреНрдпреВрдирддрдо рдкреГрд╖реНрдарднреВрдорд┐ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Redux рдореЗрдВ рдХреБрдЫ рдЧрдВрднреАрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣реЛрдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЕрднреА рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЧрдВрднреАрд░ рд▓рд╛рдн рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рд╣рдо рдлреНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ?
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрднрд╛рд▓рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдлрд┐рд░ рднреА рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд┐рдЫрд▓реЗ рдЬреНрдЮрд╛рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕рд░рд▓ рд╣реЛ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рд╡рд░реНрд╖реЛрдВ рдХреЗ рджреМрд░рд╛рди рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдард┐рди рд╕реЛрдЪрддреЗ рдереЗред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдбреАрдмреА рдХреЗ рдЕрдВрджрд░ рд░рд╛рдЬреНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдЗрд╕реЗ рдХреИрд╕реЗ рдкреВрдЫреЗрдВ?
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЖрдЬ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╢рд┐рдкрд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдЧрд▓рддрд┐рдпрд╛рдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЕрдм рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Redux рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рдордд рд╕рдордЭрд┐рдП рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдлреНрд░рдВрдЯрдПрдВрдб рд╡рд┐рдХрд╛рд╕ рдЖрдкрдХреЛ рдХрд┐рддрдирд╛ рдЕрд╕рд╣рдЬ рдХрд░ рджреЗрдЧрд╛ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд▓реЛрдЧ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЪрд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдФрд░ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдмреЗрд╣рддрд░ рдпрд╛ рдмрджрддрд░ рдХреЗ рд▓рд┐рдП, Redux рдиреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреА рд▓рдбрд╝рд╛рдИ рдЬреАрдд рд▓реА рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЖрддреА рд╣реИред рд╣рдореЗрд╢рд╛ рдРрд╕реЗ рджреЗрд╡ рд╣реЛрдВрдЧреЗ рдЬреЛ рдмрд╕ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рдо рдХрд░реЗ, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╡рд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╛ рддреЛ рд▓реЛрдЧ рдЕрдиреНрдп рдЕрдореВрд░реНрдд рдкрд░рддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреНрдпреВрдирддрдо рдкреГрд╖реНрдарднреВрдорд┐ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Redux рдореЗрдВ рдХреБрдЫ рдЧрдВрднреАрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣реЛрдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЕрднреА рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЧрдВрднреАрд░ рд▓рд╛рдн рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣реА рдореБрджреНрджреЗ рдХреА рдЬрдбрд╝ рд╣реИред Redux рдЬреИрд╕рд╛ рд╣реИ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВред рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рд▓реЗрдХрд┐рди рдпрд╣ рдмреБрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЕрдм рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рд╕рдордЭрдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдмреЗрд╣рддрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдмрд╕ рдпрд╣реАрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБред рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЖрдЧреЗ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рддрд▓рд╛рд╢рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ рдЫреЛрдЯреА рдЖрдзрд╛рд░рднреВрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЙрдЫрд╛рд▓ рдХрд░ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛:
рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ, redux-starter
рдпрд╛ рдХреБрдЫ рдФрд░ред рд╡рд╣ рдкреИрдХреЗрдЬ redux-actions
, redux-thunk
, рдФрд░ redux-logger
рдФрд░ рд╢рд╛рдпрдж рдПрдХ рд╡рд╛рджрд╛-рдЖрдзрд╛рд░рд┐рдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ function createReduxStore({reducers, middleware}) {}
рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ ( рдкрд╣рд▓реЗ @Phoenixmatrix рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░)ред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рднреА рдирд╣реАрдВ рдЙрдард╛рдиреА рдЪрд╛рд╣рд┐рдП?
createReduxStore()
рдлрд╝рдВрдХреНрд╢рди applyMiddleware
рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рд╣реЙрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Redux DevTools рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рдиреА-рдореЗрдХ" рдирдореВрдирд╛ рдРрдк рдореЗрдВ ember-redux
рдпрд╛ configureStore
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдЯреЛрд░ рд╕реЗрд╡рд╛ рд╕реЗрдЯрдЕрдк рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрдЕрдк рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдорд╛рдореВрд▓реА рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рд╣рд╛рдБ, рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ (рдареАрдХ рд╣реИ, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдФрд░ рд╡рд╛рджрд╛ рдЖрдзрд╛рд░рд┐рдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдЙрд╕ рдкрд░ рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдордЬрд╛ рдХрд░рдиреЗ рджреВрдВрдЧрд╛)ред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдмрд╕ createStarterStore(reducer)ред
рд╢рд╛рдпрдж CombReducer рдХреЛ рднреА рдмрджрд▓реЗрдВ, рддрд╛рдХрд┐ рдЖрдк рдмрд╕ рдпрд╣ рдХрд░ рд╕рдХреЗрдВ:
const store = createStarterStore({
foo,
bar,
baz
});
рдЬрд╣рд╛рдВ рдлреВ рдмрд╛рд░ рдмрд╛рдЬ рд░реЗрдбреНрдпреВрд╕рд░ рд╣реИрдВред
рдбреНрд░реЗрдЯред рдмрд╕ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ "рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд░реВрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рд▓рд┐рдП рдПрдЪрдПрдордЖрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ" рд╢рд╛рдпрдж рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рднрд▓реЗ рд╣реА рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рд░реВрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреА рд╣реЛ, рдПрдХ рдпрд╛ рджреЛрдиреЛрдВ module.hot.accept()
API рдФрд░ require(path)
рдкреБрди: рдЖрдпрд╛рдд рдЪрд░рдг рдРрд╕реЗ рдкрде рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп рд╣реЛрдВ рдФрд░ рдЪрд░ рдирд╣реАрдВред (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ... рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред) рдУрд╣, рдареАрдХ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рд╛рдБ, createStarterStore()
рд░реВрдЯ рд░рд┐рдбреНрдпреВрд╕рд░ рдпрд╛ рд╕реНрд▓рд╛рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреНрдпреВрдирддрдо рдкреГрд╖реНрдарднреВрдорд┐ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Redux рдореЗрдВ рдХреБрдЫ рдЧрдВрднреАрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣реЛрдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЕрднреА рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЧрдВрднреАрд░ рд▓рд╛рдн рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
@slorber рдореИрдВ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд▓реЛрдЧ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЪрд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдФрд░ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкрд░ рдирд╣реАрдВред рдХреБрдЫ рд▓реЛрдЧ Redux рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдирд╛ред рдХреБрдЫ рд╕рд░рд▓ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рд░рд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдмрдЪрд╛рддрд╛ рд╣реИред
рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рд╣рдордиреЗ рдЕрднреА рдПрдХ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреЛрд░ рдореЗрдВ рдирдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдЙрд╕реА рдХреЛрдб рдХреЛ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рдкрд╛рдпрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП), рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЗрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдЕрдореВрд░реНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Redux рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкрд░рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреЗрд╡рд▓ Redux рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рднреА рдХрдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЙрд╕реА рддрд░рд╣ react-redux
Redux рдХреЗ рд╕рд╛рде-рд╕рд╛рде Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ)ред
рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЪрд░реНрдЪрд╛ред рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рдПрдХ redux рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рд╕реЗ:
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рд░реЗрдбрдХреНрд╕ рдХреЛ рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдврд╛рдВрдЪреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╛ рдЙрдЪрд┐рдд рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рддрдкрд╕реНрдпрд╛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ Redux рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рд░ рдХреЛ рд░реЛрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдердХрд╛рдК рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди 2015 рдореЗрдВ рдкреНрд░рдмрдВрдзрди рд░рд╛рдЬреНрдп рдХреА рдЧрдбрд╝рдмрдбрд╝реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдЯреМрддреА рдХрд░рдиреЗ рдХрд╛ рд╕рд░рд▓ рддрд░реАрдХрд╛ рднреА рдПрдХ рдХрд╛рд░рдг рд╣реИ, рдФрд░ рдиреНрдпреВрдирддрд╛рд╡рд╛рдж рдиреЗ рдЕрдкреЛрд▓реЛ рдЬреИрд╕реЗ рдЕрджреНрднреБрдд рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреЗрд╡ рдЙрдкрдХрд░рдг) рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рдХрд╛рдо рдкрд░ рдкрд┐рдЧреАрдмреИрдХ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ рдФрд░ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рддрд░реАрдХрд╛ рджрд┐рдпрд╛ рд╣реИ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдореЗрдВ "рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдЧрд┐рд░рдирд╛"ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ "рдирд┐рдореНрди рд╕реНрддрд░" рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░реЗрдбрдХреНрд╕ рдПрдХ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рд░рд╣реА рд╣реИ, рдФрд░ рдРрдкреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░ рд╕рдореГрджреНрдз рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдЕрднреА рддрдХ рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИред рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд░реЗрдбрдХреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЕрдкреЛрд▓реЛ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрджреНрдпреЛрдЧ рдорд╛рдирдХ "рдкреНрд░реЛрдЯреЛрдХреЙрд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред
рдпрд╣ рдЕрдВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж рд╡рд░реНрддрдорд╛рди рд░реЗрдбрдХреНрд╕ redux-core
рдЬреИрд╕рд╛ рдкреИрдХреЗрдЬ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ redux
рдЦреБрдж рд╣реА рдПрдмреНрд╕рдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдРрдкреНрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдмреЗрд╢рдХ, рд░реЗрдбрдХреНрд╕-рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ redux
(рдЬреИрд╕реЗ рдЕрдкреЛрд▓реЛ, рдпрд╛ рд╕рд╛рдЧрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ?) рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ...
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдирд╛:
рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдореЗрдВ рдореМрдЬреВрджрд╛ Redux рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ :) рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реБрдзрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХреБрдЫ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ redux
рдкреИрдХреЗрдЬ рдпрдерд╛рд╡рдд рд░рд╣реЗрдЧрд╛ред
redux-starter
рдкреИрдХреЗрдЬ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╛ "рдврд╛рдВрдЪрд╛"-рд╡рд╛рдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреИрди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдЬреИрд╕рд╛ рдХреБрдЫ рднреА, рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рд╣реЛрдЧрд╛ рдЬреЛ redux
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо @markerikson рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдбрдмреЗрд╕ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдкреАрдЖрдИ, рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдФрд░ рдЕрдзрд┐рдХ рдЧрд╣рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрд▓реНрд▓реЗрдмрд╛рдЬреА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдБ рдмрдирд╛рдиреЗ рдХрд╛ рд╕реНрдерд╛рди рд╣реЛрдЧрд╛ред
рдЖрдк Delux рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрд░ (jk) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
@tannerlinsley рдХреЗ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ (рдФрд░ рдЕрдм рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ) рдХреЗ рдПрдХ рднрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ @gaearon рдХреА рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХрд╣рдирд╛ рдХрд┐, рдпрд╣ рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ (рдРрд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХрднреА рдирд╣реАрдВ рдерд╛)ред рдореИрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕реЗ рдЖрдЬ рд╕реБрдмрд╣ рд╣реА рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред
рдХрд╣рдиреЗ рдХрд╛ рд▓рдВрдмрд╛ рдШреБрдорд╛рд╡рджрд╛рд░ рддрд░реАрдХрд╛: рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдЕрдВрджрд░ рд╣реВрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдХрд┐рддрдирд╛ рдпреЛрдЧрджрд╛рди рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ (рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛) рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЬрдпрдЬрдпрдХрд╛рд░ рд╣реИред
рдореИрдВрдиреЗ рдЕрдм рдХрдИ рдмрд╛рд░ Redux рдХреЛ рдкрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдЗрд╕рдиреЗ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЛ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Redux рдЬреИрд╕реЗ HTTP рдФрд░ рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдЬреИрд╕реЗ рдлрд╝реЗрдЪред рдореБрдЭреЗ Redux рдкрд╕рдВрдж рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ (рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж) рдЬрдЯрд┐рд▓ рдЪреАрдЬреЗрдВ рд▓рд┐рдЦреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рднреА рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ 90% рдХреЗрд╕ рдЬреНрдпрд╛рджрд╛рддрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рдЬрдм рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░реАрди рдЬрдЧрд╣ рд╣реИред рдлреНрд░рдВрдЯрдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЦреНрдп рд╢рд┐рдХрд╛рдпрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ "рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдХрдореА" рд╣реИред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдирдИ рдЪреАрдЬ (рдЯреАрдПрдо) рд╣реИ , рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЕрдВрддрддрдГ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рджрдмрд╛рд╡ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рд╡рд╣реАрдВ рдЕрдм рд╣рдо рд╣реИрдВред
рдкреБрди: рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛, рд░рд╛рдп рдФрд░ рдЕрдореВрд░реНрддрддрд╛:
рдЕрдЬрд╛рдХреНрд╕ рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирдП рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рдлрдВрд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡реЗ рдердВрдХреНрд╕, рд╕рд╛рдЧрд╛ рдпрд╛ рдорд╣рд╛рдХрд╛рд╡реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦ рд░рд╣реЗ рд╣реЛрдВред рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд╡рд╣ рд╣реИ рдХреНрд░рд┐рдпрд╛рдПрдБ рдмрдирд╛рдирд╛ - рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреНрд▓рдХреНрд╕ рд╕реНрдЯреИрдВрдбрд░реНрдб рдПрдХреНрд╢рди рд╕реНрдкреЗрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИред рдЗрд╕ рд╕реЛрдЪ рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╢реНрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ - рдлреНрд▓рдХреНрд╕ рд╕реНрдЯреИрдВрдбрд░реНрдб рдЕрдЬрд╛рдХреНрд╕ рдПрдХреНрд╢рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
function fetchPosts(page) {
return {
type: 'FETCH_POSTS_REQUEST',
// Ajax request setup
ajax: {
url: `/api/posts`,
method: 'GET',
data: { page },
// Optional ajax meta attributes
meta: {
// Amount of time to debounce the execution of the request
debounce: 400,
// Amount of times to retry the request on failure
retry: 2,
// Amount of time before timing out
timeout: 10000,
// The action type that cancels the request
cancelType: 'CANCEL_FETCH_POSTS',
// Strategy when multiple FETCH_POSTS_REQUESTs are in flight
resolve: 'LATEST'
}
}
};
}
рдЕрдЬрд╛рдХреНрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ ajax
рдХреБрдВрдЬреА рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛)ред
рдореИрдВ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рдбреАрд▓ рдмреНрд░реЗрдХрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИред
рдореЗрд░реЗ рдЕрдиреБрдорд╛рди рдореЗрдВ рдХреБрдЫ рд▓рд╛рдн:
рдореИрдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рддреЗ рд╣реБрдП рд╕реБрди рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡реЗ рдПрдХ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, 'FETCH_POSTS_REQUEST'
, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдо рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд╣реАрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдереЛрдбрд╝рд╛ рд╡рд┐рдХрд▓реНрдк рдЫреЛрдбрд╝рдирд╛ред
рдПрдХ рдФрд░ рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рдПрд╕рд┐рдВрдХ рдПрдХреНрд╢рди рдЪреЗрдирд┐рдВрдЧ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХреБрдЫ рдбреЙрдХреНрд╕ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд┐рддрдиреА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдЖрдВрдд рдорд╣рд╕реВрд╕ рдХрд░рддреА рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдЧрд╛ (рдФрд░ рд╢рд╛рдпрдж рдирд╣реАрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд 90% рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ)ред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ - рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЕрдореВрд░реНрдд рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп Redux рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ - рдХреЛрдИ рд╕реМрджрд╛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ? @markerikson @gaearon
рдкреВрд░реНрд╡ рдХрд▓рд╛: redux-axios-middleware
рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВред
Redux рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ рдХрд┐ Redux рдХреЗ рдЬрдЯрд┐рд▓ рдФрд░ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реЛрдиреЗ рдХреА рд╢рд┐рдХрд╛рдпрдд рд╣реИред рдлреНрд▓рдХреНрд╕ рдФрд░ рдПрд▓реНрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд┐рдореНрди рд╕реНрддрд░ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИред Redux рд╣реЛрдо рдкреЗрдЬ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд▓реЛрдЧ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬрдЯрд┐рд▓ рд╣реИред
Redux рдЬреИрд╕рд╛ рд╣реИ рд╡реИрд╕рд╛ рд╣реА рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИред рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИ рдХрд┐ рдХреЛрд░ рдЯреАрдо рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлреАрдЪрд░-рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдП рдЧрдП рдЕрдореВрд░реНрдд рдЕрджреНрднреБрдд рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рд╣реИред рдПрдХ рдЕрдЪреНрдЫреА рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдирд┐рдореНрди рд╕реНрддрд░реАрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣реА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗред
рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ Redux рдкрд░ рд╣реА рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдЧрддрд┐рд╢реАрд▓, рд╡рд░реНрдХрд┐рдВрдЧ-рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рддрд░реАрдХреЗ рдХреА рдХрдореА рдкрд░ рджреЗрдЦрддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ create-react-app
рд╕рдорд╛рдзрд╛рди рдерд╛ред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рднреА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ (рдпрд╛рдиреА рдбреИрди рдХреА рдПрдЧрд╣реЗрдб рд╢реНрд░реГрдВрдЦрд▓рд╛ )ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╡рд╣ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдзрд╛рдЧрд╛ рд╣реИред
@markerikson рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ redux-starter
рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред
_рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдХреВрд▓рд░ рдирд╛рдо рдкрд╕рдВрдж рдЖрдПрдЧрд╛_ :stuck_out_tongue:
рдХрдИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдмрд╣реБрдд рд╣реА рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд░реЗрдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рджреЗрдЦрддрд╛ рд╣реВрдВред
рдпрд╣ рдмрд╣реБрдд рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣реА рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MobX рдкрд░ Redux-рд╢реИрд▓реА рдХреЗ рдкреНрд░рддрд┐рдорд╛рди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ MobX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдЕрдм рдореИрдВ Redux рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рдХреНрдпреЛрдВрдХрд┐ Redux (рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ Redux рдкреИрдЯрд░реНрди), рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ" рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдЬрд╣рд╛рдВ рдХрд╣реАрдВ рднреА рдХреЛрдб рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЖрдкрдиреЗ рдЗрд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдкрдиреЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ)ред
рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ Redux рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░рд▓ рднреА рдерд╛ред рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рд╕рд░рд▓ рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЙрд╕рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, "рд╡рд╛рд╣ рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЗрддрдиреА рддрд╛рд░реНрдХрд┐рдХ рд╣реИ! рдпрд╣ рдЗрддрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ!" рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Redux рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдирд╛ рдЫреЛрдЯрд╛ Redux рд╕реНрдЯреЛрд░ рдмрдирд╛рдпрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рди рдХреЗрд╡рд▓ рдореБрдЭреЗ Redux рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА, рдмрд▓реНрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ! (рдпрд╣ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╣реИ рдЬреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рд▓рд╛рдн рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред) Redux рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдореЗрдВ рдХрд╛рдлреА рд╢рд╛рдирджрд╛рд░ рд╣реИ, рдлрд┐рд░ рднреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рднреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ Redux рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдЙрд╣, "buzzwordy-ness" рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЙрдирдХреА рдорд╛рдирд╕рд┐рдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ "рдареАрдХ рд╣реИ рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯ, рд░реЗрдбрдХреНрд╕, рдЖрджрд┐ рдЖрджрд┐ рдорд┐рд▓ рдЧрдП рд╣реИрдВ, рдЕрдм рдореИрдВ рдЕрджреНрднреБрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмрдирдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╢рд╛рдирджрд╛рд░ рдРрдк рдмрдирд╛рдКрдВрдЧрд╛!" рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реИред рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдордХрджрд╛рд░ рдирдП рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдХрд┐ рдЙрдкрдХрд░рдг рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдмрд╛рд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, Redux (рдпрд╛ рдХрд┐рд╕реА Redux рдЬреИрд╕рд╛ рдкреИрдЯрд░реНрди) рдХреЛ рд╕рднреА рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдВрдЧреБрд▓рд░ рдЬреИрд╕реЗ рдЕрдиреНрдп (рдЕрднреА рднреА рдорд╣рд╛рди) рдЯреВрд▓ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╕рдВрдж рд╣реИред _рдпрд╣ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред_ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХреБрдЫ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕реАрдорд┐рдд рдкреЛрд╡рд╛ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреАрдордд рд╣реИред
рдЖрдИрдПрдордУ рдпрд╣ рд╕рдм "рд╡рд╛рдХреНрдп рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИ" рд╕рд┐рд░реНрдл рдорд░реНрджрд╡рд╛рдж рд╣реИ; рд╡рд╛рдЪрд╛рд▓рддрд╛ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреА рд╕реЗрд╡рд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдмрд▓рд┐рджрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ Redux рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдЬрдЯрд┐рд▓рддрд╛ рдирд╣реАрдВ рд╣реИред рдПрд▓реНрдо рд╕рдм рдХреБрдЫ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ Redux рдХрдо рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рд╕рд░рд▓ рдХреЛрдб рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рддреЛ рд╣рдо рдпрд╛рдВрддреНрд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЬрдореНрдкрд╕реНрдЯреЗрдЯ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдлреНрд▓реЛ рдЬрдВрдкрд╕реНрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдбрдЬрди рдХрдард┐рди рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЛрдЭрд┐рд▓ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдФрд░ рдЪреАрдЬ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрд▓реНрдо рдХреЛрдб рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ Redux рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рдЕрднреА рднреА рдореЗрд░рд╛ рджрд┐рд▓ рдзрдбрд╝рдХ рд░рд╣рд╛ рд╣реИред
рдпрд╣рд╛рдБ рдореЗрд░реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдБрдЧрд╛:
рдХреНрд░рд┐рдпрд╛рдПрдБ.рдЬреЗрдПрд╕
export function increase() {}
reducer.js
import { increase } from './actions.js';
export default handleActions({
[increase]: (state) => state + 1
}, 0);
рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрджрд░реНрдн рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдПрдлрдПрд╕рдП рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
async function a() {
}
async function b() {
}
store.dispatch(a());
store.dispatch(b()); // b() will be dispatched after a() resolves
рдЗрд╕ рддрд░рд╣ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдПрд╕рд┐рдВрдХреНрд╕ рдлрдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднреА рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдбрд┐рд╕реНрдкреИрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ, рд▓реЛрдЧреЛрдВ рдХреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред
рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдбреАрд▓рдХреНрд╕ рдореЗрдВ рдПрдХ рд╡рд╛рджрд╛ рдХрд╛рд░рдЦрд╛рдиреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ
рд░реЗрдбрдХреНрд╕ === рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ
https://github.com/Emilios1995/redux-create-module
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ:
рдореИрдВ @markerikson рд╕реЗ рд╕рд╣рдордд рд░реЗрдбрдХреНрд╕ рдХреЛрд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдврд╛рдВрдЪрд╛ рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд░реЗрдбрдХреНрд╕-рдердВрдХ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░реЗрдбрдХреНрд╕ рдХреНрдпреЛрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рдХреЛрд░ рдореЗрдВ рдирдП "рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ" рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдФрд░ рдорд┐рд╕рд╛рд▓ рджреЛрдиреЛрдВ рд╣реИрдВред
Redux рдХрд╛ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реИ: createStore
, applyMiddleware
, combineReducers
, bindActionCreators
, рдФрд░ compose
ред рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдп рд╣реИрдВред Redux рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ createStore
рд╕рдЦреНрддреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХреЛрд░ рдореЗрдВ рдХреНрдпреЛрдВ рд╣реИ?
applyMiddleware
рдПрдиреНрд╣рд╛рдВрд╕рд░реНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ applyMiddleware
рд░реЗрдбрдХреНрд╕ рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░ _рдЗрдВрдЯрд░рдлреЗрд╕_ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ applyMiddleware
рдореЗрдВ рддреБрд▓рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
combineReducers
рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд░реЗрдбреНрдпреВрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдкреИрдЯрд░реНрди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд▓реЗрдХрд┐рди redux core рдореЗрдВ рдЗрд╕рдХреА рдореМрдЬреВрджрдЧреА рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдо рдирд╣реАрдВ рдмрд▓реНрдХрд┐ _ubiquitous_ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдиреЙрдирдЯреНрд░рд┐рд╡рд┐рдЕрд▓ рд░реЗрдбрдХреНрд╕ рдРрдк рд░реВрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП combineReducers
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВрдХрд┐ combineReducers
Redux рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд░реВрдк рд╣реИ, рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рд░реЗрдбреНрдпреВрд╕рд░ рд░рдЪрдирд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд░реВрдк рдорд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрдж рд╣реИред
bindActionCreators
рдкреНрд░реЗрд╖рдг рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдкрд░реАрдд рд░реВрдк рд╕реЗ, bindActionCreators
рднреА рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП Redux рдХреА рдХреБрдЫ рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ bindActionCreators
рдХрд╛ рдорд╛рддреНрд░ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣реА рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрдм рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ (рдЬреЛ bindActionCreators
рджреНрд╡рд╛рд░рд╛ "рдЕрдиреБрдореЛрджрд┐рдд" рд╣реИрдВ) рдмрдирд╛рдо рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ (рдЬреЛ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдордХрдХреНрд╖ рдХреЛрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ) рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ react-redux
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рдХреЛрдбрдмреЗрд╕ рджреЗрдЦреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ mapStateToProps
рд╣рдореЗрд╢рд╛ "bespoke" рдЪрдпрдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди mapDispatchToProps
рд╣рдореЗрд╢рд╛ рдкреВрд░реНрд╡-рд▓рд┐рдЦрд┐рдд рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдк рд╣реЛрддрд╛ рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА Redux рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рдпреЗ рд╕рднреА рдЗрд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА Redux рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░рдХрд░ рд╡реЗ рд╡рд┐рдХрд▓реНрдк рдХрдо рдХрдард┐рди рдмрдирд╛рддреЗ рд╣реИрдВред рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдЖрдЧреЗ рдкреНрд░рд╢реНрди рдЙрдард╛рддрд╛ рд╣реИ:
рднрд▓реЗ рд╣реА рдЗрди рд╕рднреА рдХреЗ рдЙрддреНрддрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрдирдХреЗ рдкрд░рд┐рд╕рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдФрд░ рд╕рдореБрджрд╛рдп рдХрд╛ рдиреБрдХрд╕рд╛рди рдХрд░рддреЗ рд╣реИрдВред
@ рдЖрдзреБрдирд┐рдХрд╕реЗрд░рдл : рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде
рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдордиреЗ рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЗрддрд┐рд╣рд╛рд╕ (рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдж рддрд╛рдУ рдСрдлрд╝ рд░реЗрдбрдХреНрд╕, рднрд╛рдЧ 1 - рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЗрд░рд╛рджреЗ рдХреЗ рд▓рд┐рдП рд╢реЛрдз рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, redux-thunk
рдерд╛ рдореВрд▓ рд░реВрдк рд╕реЗ Redux рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдФрд░ react-redux
рдХреЛ рдХреЗрд╡рд▓ рдмрд╛рдж рдореЗрдВ рд╣реА рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдВрд╣рд┐рддрд╛рдмрджреНрдз рдХрд░рддреА рд╣реИрдВред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЙрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ _intended_ рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдВрд╣рд┐рддрд╛рдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ: рд╕реНрд▓рд╛рдЗрд╕ рд░реЗрдбреНрдпреВрд╕рд░ рдХреА рд╕рдВрд░рдЪрдирд╛, рдПрд╕рд┐рдВрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЕрдиреНрдп рдХреЗрдВрджреНрд░реАрдХреГрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рдФрд░ рдмрд╛рдзреНрдп рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдШрдЯрдХреЛрдВ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛) рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП)ред рдХреБрдЫ рдЗрд╕реА рддрд░рд╣, рдЬрдмрдХрд┐ рд░реАрд╕реЗрд▓реЗрдХреНрдЯ рдХреЛрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдбреИрди рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ ред
рддреЛ рд╣рд╛рдБ, рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ "рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛", рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдХрд░, рд╣рдордиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЛрдВ рд╕реЗ рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЙрд╕ рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред
рдЖрдкрдХреЗ рдкрд┐рдЫрд▓реЗ рддреАрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░:
combineReducers
рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рдерд╛ (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ _lot_ рд░рд╣рд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ # 1768 рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреА рдЧрдИ рдЬрдмрдХрд┐ред рд╡рд╣ рдкреАрдЖрд░ рднреА рдардк рд╣реЛ рдЧрдпрд╛ рд╣реИредmapState
рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ-рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдкреАрдЖрд░ рднреА рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рд░рд┐рд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ createStructuredSelector
рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд╕ "рддрд╛рдУ рдСрдлрд╝ рд░реЗрдбрдХреНрд╕" рдкреЛрд╕реНрдЯ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд▓рдХреНрд╖реНрдп рд░реЗрдбрдХреНрд╕ рдХреЛрд░ рдПрдкреАрдЖрдИ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдиреНрдпреВрдирддрдо рд░рдЦрдирд╛ рдерд╛ , рдФрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдерд╛ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Redux рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдПрдВрдбреНрд░рдпреВ рдиреЗ рдХреБрдЫ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ "рдЖрд╢реАрд░реНрд╡рд╛рдж" рджреЗрдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА :
рдЬреИрд╕рд╛ рдХрд┐ рдЧреЗрд░реЙрди рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛, (рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ ... рд╢рд╛рдпрдж рд╕реНрд▓реИрдХ) рд╣рдо рдлреНрд▓рдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдЖ рдХреА рддрд░рд╣ рдмрдирдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдореБрджрд╛рдп рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреЛрдЬрдирд╛ "рдзрдиреНрдп" рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд╣реИ, рд╕рдВрднрд╡рддрдГ рдПрдХ reduxjs GitHub рд╕рдВрдЧрдарди рдХреЗ рддрд╣рддред
рдкрд╣рд▓реЗ рдЕрдк-рдереНрд░реЗрдб, рдореИрдВрдиреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдЖрд╕рд╛рди рд░реЗрдбрдХреНрд╕ рд╕реЗрдЯрдЕрдк" рдЕрдореВрд░реНрдд lib, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо "рдзрдиреНрдп" рдРрдбрдСрди рдХреА рд╕реВрдЪреА, рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧреА рдЬреЛ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ? (рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдиреЗ рднреА рдЗрд╕ рд╕реВрддреНрд░ рдХреА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред) рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╛ рд╡рд┐рдЪрд╛рд░?
рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдореБрджрд╛рдп рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреЛрдЬрдирд╛ "рдзрдиреНрдп" рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд╣реИ, рд╕рдВрднрд╡рддрдГ рдПрдХ reduxjs GitHub рд╕рдВрдЧрдарди рдХреЗ рддрд╣рддред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рднреА рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдПрдХ рдХрджрдо рдЖрдЧреЗ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛: рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди redux
рдкреИрдХреЗрдЬ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ @redux/core
, рдзрдиреНрдп рд░реАрд╕реЗрд▓реЗрдХреНрдЯ рдФрд░ рд░реЗрдбрдХреНрд╕-рдПрдХреНрд╢рди рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд░реЗрдкреЛ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ redux
рдкреИрдХреЗрдЬ рд╕реНрд╡рдпрдВ рдЗрди рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рд╣реА рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд╣ _sort of_ redux core рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рди рдХрд░рдиреЗ рдХреА рдмрд╛рдзрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг - рдХрд╛ рдПрдХ рд╕рдЦреНрдд рд╕реБрдкрд░рд╕реЗрдЯ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП - рдХреЛрд░ рдХреЗ рд╕рд╛рде рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдСрдкреНрдЯ-рдЗрди рд╣реЛрдВрдЧреА рдФрд░ рдирд┐рдЬреА рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЬрд╣рд╛рдБ рддрдХ "рдмреНрд▓реЛрдЯ" рдХреА рдмрд╛рдд рд╣реИ - рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢реБрд░реВ рдореЗрдВ рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреЗрдбрд╝-рд╣рд┐рд▓рд╛рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореИрдкрд╕реНрдЯреЗрдЯ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдПрдХреНрдЯ-рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдкреАрдЖрд░ рднреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рд░рд┐рд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ
createStructuredSelector
рд╕рд╛рде рдПрдХ рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдХреБрдЫ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдЬрд┐рд╕ рдореЛрдиреЛрд░реЗрдкреЛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдбрд╛рд╢ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдЕрдм -- рд▓реЛрдбрд╛рд╢ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ: рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЧреНрд░рд╣, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рд╕реНрд╡рдпрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рд╣реИрдВред рд▓реЙрд╢ рдореЗрдВ рд▓рдЧрднрдЧ рд╣рд░ рдХрд╛рд░реНрдп "рдиреБрд╕реНрдЦрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - groupBy
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ _pattern_ рд╣реИ; рдпрд╣ рдХрд╣рдиреЗ рд╡рд╛рд▓реЗ рд╣рдо рдХреМрди рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
рдФрд░ рд╣рд░ рд▓реЙрд╢ рдлрдВрдХреНрд╢рди рдЕрдкрдиреА _a la carte_ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред import { groupBy } from "lodash"
рд╕реЗ рдЕрдзрд┐рдХ import groupBy from "group-by"
import { groupBy } from "lodash"
рдХрд╛ рдХреЛрдИ _functional_ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЯреНрд░реА-рд╣рд┐рд▓рд┐рдВрдЧ рд╕реЗ рдХреНрдпреЛрдВ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдореИрдВ рдмрд╕ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреА рдЪреАрдЬреЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рд▓реЗрдХрд┐рди рд▓реЛрджрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╡реНрдпрдВрдЬрдиреЛрдВ рдпрд╛ рдиреИрдиреЛрд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рджреЛрд╣рд░рд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Lodash рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЖрдкрдХреЛ рдХреЛрдИ рдиреБрд╕реНрдЦрд╛ рджреЗрдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХреБрдЫ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ -- рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдФрд░ рдЖрдпрд╛рдд рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдШрд░реНрд╖рдг рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рджрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд╖рдгреЛрдВ рд╕реЗ рднрд░реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
CQRS , рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ , рдФрд░ рдЕрдВрддрддрдГ рдбреЛрдореЗрди рдбреНрд░рд┐рд╡реЗрди рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реНрдХреВрд▓ рдСрдлрд╝ рдерд┐рдВрдХ рд╡реЗ рдмрдбрд╝реЗ рдкреВрд░реНрд╡рдЬ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ Flux рдФрд░ Redux рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрди рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдХрднреА-рдХрднреА рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рд░реЗрдбрдХреНрд╕ рдФрд░ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рдЯреВрд▓рд┐рдВрдЧ рдиреЗ рдлреНрд▓рдХреНрд╕ рдФрд░ рдлреНрд▓рдХреНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрдкрдиреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреАрдЖрдИ рд╢рдмреНрджрд╛рд╡рд▓реА рд▓реА рдЬреЛ рдЙрд╕ рд╕рдордп рд▓реЛрдХрдкреНрд░рд┐рдп рдереАрдВред рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореМрдЬреВрджрд╛ рдПрдХреНрд╕рдкреЛрдЬрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд▓рд╛рдн рдХреЗ рдХреБрдЫ рдЕрд╡рд╕рд░ рдЦреЛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдВрддрд░ рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП: рдЕрдзрд┐рдХрд╛рдВрд╢ рдИрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ, Redux рдХреНрд░рд┐рдпрд╛ рдХреЛ рдИрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Redux ActionCreators рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдЕрд░реНрде рд╣реИ рдЬреЛ рдЗрд╕ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рд╕рд╛рде рднреА рдореБрдлреНрдд рдореЗрдВ рдЖрддрд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рд▓реЙрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдХреНрд░рдордмрджреНрдз рдбреЗрдЯрд╛ рд╣реИрдВред рдШрдЯрдирд╛рдПрдБ рдмрддрд╛рддреА рд╣реИрдВ рдХрд┐ рднреВрддрдХрд╛рд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ред рдШрдЯрдирд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдордиреЛрджрд╢рд╛ рд╣реЛрддреА рд╣реИред рдЖрджреЗрд╢ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдЕрдЧрд▓реЗ рджрд╢рдХ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдЧрд╛, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдХреЗ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░рдХреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧрд┐рддрд╛, рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдкреАрдЯ-рдкреАрдЯ рдХрд░ рдорд╛рд░ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛: https://github.com/reactjs/redux/issues/351
рдУрд╣, рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА, рдзрдиреНрдпрд╡рд╛рдж! :+1:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ #351 рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рдереАред рдпрджрд┐ рд╣рдо рдПрдХ рдРрд╕реЗ рдореЛрдбрд╝ рдкрд░ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдо рдПрдкреАрдЖрдИ рдирд┐рд░реНрдгрдпреЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдордиреЗ рд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдордп рд╣реИред
рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред
рдпрд╣рд╛рдВ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдореБрд╣рд╛рд╡рд░реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдПрдкреАрдЖрдИ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
import { createEventStream, createProjection } from 'redux';
// Initialize the event stream separately from the store. This becomes the one
// true source of truth for your application.
const eventStream = createEventStream({
// Commands are the only thing that we want to couple to the eventStream. The
// set of events which may end up in an eventStream should be easy to predict.
//
// A definition like this supports static analysis inference well for
// consumers that can leverage it.
increment: () => ({ type: 'INCREMENT' }),
decrement: () => ({ type: 'DECREMENT' }),
});
// Multiple stores with disjoint or overlapping data can be used to consume the
// same event stream.
const store = createProjection(eventStream, reducer, init);
const adminStore = createProjection(eventStream, adminReducer, init);
// We don't need a jargon term ("Middleware"), or a dedicated hook to handle
// async anymore. We just register more subscribers to the eventStream.
eventStream.subscribe(myCustomMiddleWare);
eventStream.subscribe(sendEventsToAnalytics);
eventStream.subscribe(logEventsForPlayback);
// Calls to commands can be wrapped with React Providers or container components
// in the same way that Redux currently does. They can also be called directly.
eventStream.increment();
@ajhyndman : рдЬрдмрдХрд┐ рдореИрдВ рд╕реБрдЭрд╛рд╡ рдФрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдХрд┐ рдмрд╛рдЗрдХрд╢реЗрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдШреЛрдбрд╝рд╛ рдЦрд▓рд┐рд╣рд╛рди рд╕реЗ рднрд╛рдЧ рдЧрдпрд╛ рд╣реИ (рд░реВрдкрдХреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдбреИрди рдиреЗ рд╕реАрдХреНрдпреВрдЖрд░рдПрд╕/рдИрдПрд╕ рд╢рд░реНрддреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдлреНрд▓рдХреНрд╕ рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рдФрд░ рдХреЛрд░ рдПрдкреАрдЖрдИ рдпрд╛ рд░реЗрдбрдХреНрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╢рд░реНрддреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред
(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдмрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдЖрдВрдХрдбрд╝реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдЬреЗрдПрд╕ рд╕рдореБрджрд╛рдп рдХреЗ рднреАрддрд░ рд╕реАрдХреНрдпреВрдЖрд░рдПрд╕/рдИрдПрд╕ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд░реЗрдбрдХреНрд╕ рдХреЗ "рдПрдХреНрд╢рди" рдФрд░ "рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕" рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдЕрдзрд┐рдХ рд▓реЛрдЧ рд╣реИрдВред )
рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╛рддрдЪреАрдд рдкрд╣рд▓реЗ рднреА рд╣реЛ рдЪреБрдХреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рди рдЦреЛрд▓рдиреЗ рдХреА рдкреНрд░рдмрд▓ рдЗрдЪреНрдЫрд╛ рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рдЬреНрдпрд╛рджрд╛ рдЬреЛрд░ рд╕реЗ рдкреНрд░реЗрд╕ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред (рдпрджрд┐ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╕рдВрдкрд░реНрдХ рд╕реВрддреНрд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреЛ рдХрд╣реАрдВ рдФрд░ рдкрдврд╝рдиреЗ рдпрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред)
рдмреЗрд╢рдХ, рдЖрдк рднреА рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЦрд╛рдИ рдХрд╛рд░рдХ рд╣реИ, рдФрд░ рд╕рдВрдкреВрд░реНрдг рдПрдкреАрдЖрдИ рд╕рддрд╣ рдФрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдмрджрд▓рдирд╛ рдЗрд╕ рд╕рдордп рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЕрдм рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдФрд░ Redux рд╕рдореБрджрд╛рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реАрдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред
- рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╕рдВрднрд╡ рдЕрдореВрд░реНрддрддрд╛рдПрдВ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЗрдбрдХреНрд╕ рдХреЛ рдЫреБрдкрд╛рдП рдмрд┐рдирд╛ (рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ "рдЖрдзрд╛рд░" рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди/рд╕реАрдЦрдиреЗ рдХрд╛ рдкрде рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛)?
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╢рдмреНрджрд╛рд╡рд▓реА рдЙрдзрд╛рд░ рд▓рд┐рдП рдпрд╛ рдПрдкреАрдЖрдИ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реА рдЬреАрдд рд╣реИрдВ рдЬреЛ рд╣рдо рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рд╕реНрдЯреЛрд░ рдХреЛ "рдПрдХ рд░рд╛рдЬреНрдп рдХрдВрдЯреЗрдирд░ рдЬрд┐рд╕рдореЗрдВ рдХрд░рдВрдЯрд╕реНрдЯреЗрдЯ" рдХрд╛ рдПрдХ "рд╢реБрджреНрдз рдХрд╛рд░реНрдп" рд╣реИ (рдпрд╣ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рд╕реЗ рдШрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдПрдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ-рд╕реВрдЪреА (рдпрд╛ рдПрдХ рдзрд╛рд░рд╛) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреЛрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ Redux рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдиреЗ рдореЗрдВ рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА рд╣реИред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛"ред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕-рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдФрд░ рдЕрдореВрд░реНрдд рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ (рджреЗрдЦреЗрдВ: рдЕрдкрд╛рдЪреЗ рд╕рдордЬрд╛ , рдФрд░ рд▓рд┐рдВрдХреНрдбрдЗрди рдХреА рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЯреАрдо рд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рдХрд╛рдо )ред рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реНрдЯреЗрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ, рд▓рдЧрд╛рддрд╛рд░ рд░реЗрдбрдХреНрд╕ рд╕реНрдЯреЛрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ?
рдХреЛрдИ рднреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕рдореБрджрд╛рдп рдПрдХ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмреАрдЪ рдореЗрдВ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдореИрдВ рдЗрди рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ! рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдбрдВрдк рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВрдЧреЗред
рд╕рд╛рдЗрдб рдиреЛрдЯ: рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо-рдЬреИрд╕реА рд░реИрдкрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдКрдкрд░ рд╕реБрдЭрд╛рдИ рдЧрдИ рд╕рддрд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ!
@ajhyndman рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реИрдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рд╕рдордЬрд╝рд╛ рдФрд░ рд▓рд┐рдВрдХреНрдбрдЗрди рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, рдпрджрд┐ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдкрд╛рдЪреЗ рд╕рдордЬрд╝рд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдВрджрд░-рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрднреБрдд рдмрд╛рдд рдирд╣реАрдВ рдкрдврд╝реА/рджреЗрдЦреА рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп
рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдХрдорд╛рд▓ рд╣реИ! рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ redux
рд░реЗрдкреЛ рдХреЗ рд░реАрдбрдореЗ рдкрд░ рдзрдиреНрдпрд╡рд╛рдж рдХреА рд╕реВрдЪреА рдореЗрдВ рджреВрд╕рд░рд╛ рдЖрдЗрдЯрдо рднреА рд╣реИред
рдЬрд╝рд░рд╛ рд╕реБрдирд┐рдП рд╕рднреА!
рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рдЕрд╡рдЧрдд рд╣реБрдП рдмрд┐рдирд╛, рдореИрдВрдиреЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рддрд░рд╣ рд╕реЗ @markerikson рдХреЗ рдореВрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕реАрдзрд╛ рдЙрддреНрддрд░ рд╣реИ рдФрд░ @gaearon рдХреА рд╕реВрдЪреА рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХреЗрдЖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдпрд╣ redux, redux-saga рдФрд░ reselect рдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рд╣реИред рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЧреЛрдВрдж рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЗрдЖ рдХреБрдЫ рднреА рдирдпрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдЪреНрдЪреЗ рд░реЗрдбрдХреНрд╕ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░, рдХрдЪреНрдЪреЗ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рд╕рд╛рдЧрд╛ рдФрд░ рдХрдЪреНрдЪреЗ рдкреБрдирд░реНрдЪрдпрди рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреЗрдЖ рдСрдкрд░реЗрд╢рди рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдЖрдк рдЗрд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рдКрдкрд░ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдЬрд╣рд╛рдВ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрдирдкреБрдЯ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЗ рдкреНрд░реЙрдкреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рджреЛ рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдирд┐рдЬреА рдкрд╛рдареЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд▓реЗрдЦрди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред
рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рд╣рдореЗрд╢рд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░реЗрдбрдХреНрд╕ рдХреЗ рдореВрд▓ рдореЗрдВ рд╣реА рд╕рд╣реА рд░рд╣рддрд╛ рд╣реИред
рд╡реИрд╕реЗ рднреА, рдкрд░реНрдпрд╛рдкреНрдд рдмрд╛рдд, рдпрд╣рд╛рдБ рдХреБрдЫ рдХреЛрдб рд╣реИред рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ "рдЗрдирд▓рд╛рдЗрди рдХреЗрдЖ" рдХрд╣рддрд╛ рд╣реВрдВ - рдЬрд╣рд╛рдВ рддрд░реНрдХ рд╕реАрдзреЗ рдЖрдкрдХреЗ рдШрдЯрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЕрднреА рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рд░рд┐рдПрдХреНрдЯ рдХреЗ setState
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдореЛрдб рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { kea } from 'kea'
@kea({
actions: () => ({
increment: (amount) => ({ amount }),
decrement: (amount) => ({ amount })
}),
reducers: ({ actions }) => ({
counter: [0, PropTypes.number, {
[actions.increment]: (state, payload) => state + payload.amount,
[actions.decrement]: (state, payload) => state - payload.amount
}]
}),
selectors: ({ selectors }) => ({
doubleCounter: [
() => [selectors.counter],
(counter) => counter * 2,
PropTypes.number
]
})
})
export default class Counter extends Component {
render () {
const { counter, doubleCounter } = this.props
const { increment, decrement } = this.actions
return (
<div className='kea-counter'>
Count: {counter}<br />
Doublecount: {doubleCounter}<br />
<button onClick={() => increment(1)}>Increment</button>
<button onClick={() => decrement(1)}>Decrement</button>
</div>
)
}
}
рдпрджрд┐ рдЖрдкрдХрд╛ рдРрдк рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ increment
рдФрд░ decrement
рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ counter
рдкреНрд░реЛрдк рддрдХ
// counter-logic.js
import PropTypes from 'prop-types'
import { kea } from 'kea'
export default kea({
actions: () => ({
increment: (amount) => ({ amount }),
decrement: (amount) => ({ amount })
}),
reducers: ({ actions }) => ({
counter: [0, PropTypes.number, {
[actions.increment]: (state, payload) => state + payload.amount,
[actions.decrement]: (state, payload) => state - payload.amount
}]
}),
selectors: ({ selectors }) => ({
doubleCounter: [
() => [selectors.counter],
(counter) => counter * 2,
PropTypes.number
]
})
})
// index.js
import React, { Component } from 'react'
import { connect } from 'kea'
import counterLogic from './counter-logic'
@connect({
actions: [
counterLogic, [
'increment',
'decrement'
]
],
props: [
counterLogic, [
'counter',
'doubleCounter'
]
]
})
export default class Counter extends Component {
render () {
const { counter, doubleCounter } = this.props
const { increment, decrement } = this.actions
return (
<div className='kea-counter'>
Count: {counter}<br />
Doublecount: {doubleCounter}<br />
<button onClick={() => increment(1)}>Increment</button>
<button onClick={() => decrement(1)}>Decrement</button>
</div>
)
}
}
рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ redux-saga рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝реЗрдВред
рдХреЗрдП рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдм рддрдХ рдЕрддреНрдпрдзрд┐рдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░рд╣реА рд╣реИ, рдПрдХ рдореБрджреНрджреЗ рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░рддреЗ рд╣реБрдП: "рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЗрдПрдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд░реЗрдбрдХреНрд╕ рджреБрдирд┐рдпрд╛ рдХреЛ рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП! ЁЯСН" :)
рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣рд╛рдБ рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! :)
рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ! 'increment'
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рджреВ рдХреЗ рддрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВ
рдХреНрдпрд╛ рдпрд╣ рдЪрд░реНрдЪрд╛ рдХрд╣реАрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реА? рдХреНрдпрд╛ Kea рд╕рдмрд╕реЗ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
@lucfranken : рдирд╣реАрдВ, рдЪрд░реНрдЪрд╛
рдпрджрд┐ рдЖрдк Redux рдкрд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдореВрд░реНрддрддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ Kea рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрджрд┐ рдЖрдк "Redux рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреИрдХ" рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕реНрдЯреЛрд░ рд╕реЗрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдХреЗ рдЖрд╕рдкрд╛рд╕ рджреЗрдЦрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЬрдВрдЧрд▓реА рдореЗрдВ рджреЗрдЦреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдо рдирд╣реАрдВ рд╣реИред
рдореЗрд░реА рдЯреЛрдкреА рдпрд╣рд╛рдБ рд░рд┐рдВрдЧ рдореЗрдВ рдлреЗрдВрдХ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ: https://github.com/HenrikJoreteg/redux-bundler
рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рд░рд▓реАрдХрд░рдг рдФрд░ рдХрдореА рд╣реИред
рдЗрд╕ рддрд░рд╣ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА:
https://github.com/anish000kumar/redux-box
рдЕрд░реЗ, рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреЛрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рдд рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ Redux рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдлрд▓ рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЖрдЬрд╝рдорд╛рдПрдВ :
рд░реЗрдбрдХреНрд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣рд╛рдВ рд╣реИ
рдзрд╛рдЧреЗ рдХреЗ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд▓рдВрдмрд┐рдд рдиреЗрдХреНрд░реЛрдЗрдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рдВрдЧреА:
рдиреЗрдХреНрд░реЛ-рдереНрд░реЗрдб рдХреА рд╡рд╛рдкрд╕реА!
рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдореЗрд░реЗ рд╕рдВрдкрд╛рджрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ Redux-Starter-Kit рдкреИрдХреЗрдЬ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ Redux рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд┐рддрдиреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛:
mapStateToProps
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛)редрдореВрд▓ рд░реВрдк рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Redux рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдмреНрд░рд╛рдВрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИред
рд╕рд╛рде рд╣реА, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдкрд░ рддреБрдо рдХрд░ рд╕рдХрддреЗ рд╣реЛред