рдмрддрдЦ рдХреЗ рд╕рд╛рде рдПрдХ Redux рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ

рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ "React.js рдбреЗрд╡рд▓рдкрд░" рдиреЗ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред





рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреЗрд▓ рдХрд╛ рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреИрд╕рд╛ рд╣реИ? рдЫрд╣ рдорд╣реАрдиреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░реЗрдВ?

2015 рдореЗрдВ, Redux рдиреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рддреВрдлрд╛рди рд▓рд╛ рджрд┐рдпрд╛ рдФрд░ рдЦреБрдж рдХреЛ React рд╕реЗ рдкрд░реЗ рдПрдХ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред

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

рд╣рдореЗрдВ рдпрд╣ рдХрджрдо рдЙрдард╛рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдЖрд╡реЗрджрди рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рд╕реЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред

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

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

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреЛрдб рд╕рдВрдЧрдарди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ред

рдлрд╝реАрдЪрд░ рдмрдирд╛рдо рдлрд╝реАрдЪрд░


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



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

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

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

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

рдлрд╝реАрдЪрд░-рдкрд╣рд▓реЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдЙрддреНрдкрд╛рдж, рдХрд╛рд░реНрдЯ, рд╕рддреНрд░ред

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

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

рджреЛ рджреБрдирд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдВрдпреЛрдЬрди


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

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

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



рд╣рдо рдлрдВрдХреНрд╢рди-рдкреНрд░рдердо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдЧрдарди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ: рдкреГрд╖реНрда, рд▓реЗрдЖрдЙрдЯ, рдШрдЯрдХ, рд╡рд░реНрдзрдХ , рдЖрджрд┐ред

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

рдЗрд╕ рдмреАрдЪ, redux рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ ...

рдкреЗрд╢ рд╣реИ рдлрд┐рд░ рд╕реЗ рдбрдХ


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

рдореВрд▓ рдореЙрдбреНрдпреВрд▓рд░ рдЕрдкреНрд░реЛрдЪ рдбрдХреНрд╕ рд░рд┐рдбрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

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

рддреЛ рдлрд┐рд░ рд╕реЗ рдмрддрдЦ рджрд┐рдЦрд╛рдИ рджрд┐рдП ред рд╕рдорд╛рдзрд╛рди рдмрддрдЦ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдерд╛ред

duck/
тФЬтФАтФА actions.js
тФЬтФАтФА index.js
тФЬтФАтФА operations.js
тФЬтФАтФА reducers.js
тФЬтФАтФА selectors.js
тФЬтФАтФА tests.js
тФЬтФАтФА types.js
тФЬтФАтФА utils.js

рдмрддрдЦ рдлрд╝реЛрд▓реНрдбрд░ рдЪрд╛рд╣рд┐рдП:

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

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

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

рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦреЗрдВред

рдкреНрд░рдХрд╛рд░


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

const QUACK = "app/duck/QUACK";
const SWIM = "app/duck/SWIM";

export default {
    QUACK,
    SWIM
};

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


рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХреНрд╢рди рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред

import types from "./types";

const quack = ( ) => ( {
    type: types.QUACK
} );

const swim = ( distance ) => ( {
    type: types.SWIM,
    payload: {
        distance
    }
} );

export default {
    swim,
    quack
};

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

рд╕рдВрдЪрд╛рд▓рди


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



ред рдпрджрд┐ рдСрдкрд░реЗрд╢рди рдердВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ , рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред

import actions from "./actions";

// This is a link to an action defined in actions.js.
const simpleQuack = actions.quack;

// This is a thunk which dispatches multiple actions from actions.js
const complexQuack = ( distance ) => ( dispatch ) => {
    dispatch( actions.quack( ) ).then( ( ) => {
        dispatch( actions.swim( distance ) );
        dispatch( /* any action */ );
    } );
}

export default {
    simpleQuack,
    complexQuack
};

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

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

рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реА


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

import { combineReducers } from "redux";
import types from "./types";

/* State Shape
{
    quacking: bool,
    distance: number
}
*/

const quackReducer = ( state = false, action ) => {
    switch( action.type ) {
        case types.QUACK: return true;
        /* ... */
        default: return state;
    }
}

const distanceReducer = ( state = 0, action ) => {
    switch( action.type ) {
        case types.SWIM: return state + action.payload.distance;
        /* ... */
        default: return state;
    }
}

const reducer = combineReducers( {
    quacking: quackReducer,
    distance: distanceReducer
} );

export default reducer;

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

рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ CombReducers рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ reducers.jsрдФрд░ store.jsрдЬрд╣рд╛рдВ рд╣рдо рд░рд╛рдЬреНрдп рдХреЗ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ


рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдЪрдпрдирдХрд░реНрддрд╛ ( рдЪрдпрдирдХрд░реНрддрд╛ ) рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрддрдЦ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ CQRS рдкреИрдЯрд░реНрди рдХреЗ рд╕рдорд╛рди рд╣реИ ред

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

function checkIfDuckIsInRange( duck ) {
    return duck.distance > 1000;
}

export default {
    checkIfDuckIsInRange
};

рд╕реВрдЪреА


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

  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрддрдЦ рд╕реЗ рд░рд┐рдбреНрдпреВрд╕рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ ред
  • рдкрдВрдЬреАрдХреГрдд рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред
  • рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рдХрд╛рд░ред

import reducer from "./reducers";

export { default as duckSelectors } from "./selectors";
export { default as duckOperations } from "./operations";
export { default as duckTypes } from "./types";

export default reducer;

рдЯреЗрд╕реНрдЯ


рдмрддрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рдХреЛрдб рдХреЗ рдареАрдХ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

Redux рдкрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ:

import expect from "expect.js";
import reducer from "./reducers";
import actions from "./actions";

describe( "duck reducer", function( ) {
    describe( "quack", function( ) {
        const quack = actions.quack( );
        const initialState = false;

        const result = reducer( initialState, quack );

        it( "should quack", function( ) {
            expect( result ).to.be( true ) ;
        } );
    } );
} );

рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЖрдк рд░рд┐рдбреНрдпреВрд╕рд░ , рдСрдкрд░реЗрд╢рдВрд╕, рд╕рд┐рд▓реЗрдХреНрдЯрд░реНрд╕ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ред
рдореИрдВ рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд╛рднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ!

рдмрд╕ рдЗрддрдирд╛ рд╣реА


рд░реА-рдбрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рд░реЗрдб рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ Redux рдХреЛрдб рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░

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






All Articles