рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ "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";
const simpleQuack = actions.quack;
const complexQuack = ( distance ) => ( dispatch ) => {
dispatch( actions.quack( ) ).then( ( ) => {
dispatch( actions.swim( distance ) );
dispatch( );
} );
}
export default {
simpleQuack,
complexQuack
};
рдЬреИрд╕рд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рдЙрдиреНрд╣реЗрдВ рдСрдкрд░реЗрд╢рди, рдереНрд░рдХреНрд╕ , рд╕рд╛рдЧрд╛, рдорд╣рд╛рдХрд╛рд╡реНрдп, рдХреЙрд▓ рдХрд░реЗрдВ ред рдмрд╕ рдирд╛рдордХрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдФрд░ рдЙрдирд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣реЗрдВредрдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдСрдкрд░реЗрд╢рди рдмрддрдЦ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрдЪрд╛рд▓рди рдмрд╛рд╣рд░ рд╕реЗ рд╕реБрд▓рдн рд╣реЛ рдЬрд╛рддрд╛ рд╣реИредрдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реА
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдмрд╣реБрдореБрдЦреА рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд░рд╛рдЬреНрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд░рд┐рдбреНрдпреВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдиреЗ рдХрдореНрдмрд╛рдЗрдирд░реБрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдбрд░реЛ рдордд ред рдпрд╣ рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛редimport { combineReducers } from "redux";
import types from "./types";
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 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВред рдХреЛрд░реНрд╕
рдкрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ ред