Redux: рддреЛ html5 рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╕рд╛рде redux рдбреАрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЬреБрд▓ре░ 2015  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: reduxjs/redux

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

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

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

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

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

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

PS рдореИрдВрдиреЗ рдЖрдкрдХрд╛ рд╡реАрдбрд┐рдпреЛ youtube рдкрд░ рджреЗрдЦрд╛ (рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЙрдЯ рд▓реЛрдбрд░ + Redux рднрд╛рд╖рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ)ред рдкреНрд░рддрд┐рднрд╛рд╢рд╛рд▓реАред

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

рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдбреА 3 рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдИ рдереАред рдореБрдЭреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ <svg> рдЯреИрдЧ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдирд╛ рд░рд╛рдЬреНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ рдлрд┐рд░ рдЬреИрд╕реЗ рд╣реА рд░рд╛рдЬреНрдп рдмрджрд▓ рдЧрдпрд╛, d3 рдПрдирд┐рдореЗрд╢рди рд╢реБрд░реВ рдХрд░реЗрдВ, рдирдП рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ, рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЖрджрд┐ред

рдпрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд▓реЗрдЦ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдкрдиреЗ <svg> рддрддреНрд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрд╛ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ <canvas> , рдФрд░ рдлрд┐рд░ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЕрдкрдиреА рдЧрдВрджреА рдЫреЛрдЯреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рджреВрд░ рд░рдЦреЗрдВ, рдЬрдмрдХрд┐ рдЬрдм рднреА рд░рд╛рдЬреНрдп рдмрджрд▓рддрд╛ рд╣реИ рддрдм рднреА рдЖрдкрдХреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрддрд╛ рд╣реИ:

рдпрд╣рд╛рдБ рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рд╣реИ:

React.createClass({
    render: function() {
        return <svg></svg>;
    },
    componentDidMount: function() {
        d3.select(this.getDOMNode())
            .call(chart(this.props));
    },
    shouldComponentUpdate: function(props) {
        d3.select(this.getDOMNode())
            .call(chart(props));
        return false;
    }
});

рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ shouldComponentUpdate() рд╣рдореЗрд╢рд╛ false рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдХреЗ рдмрд╛рдж DOM рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрднреА рдирд╣реАрдВ рдЫреВрдПрдЧрд╛ред

рдЖрдк рдЕрдкрдиреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб рдкрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде d3 рдХреЙрд▓ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдбреА 3 рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдИ рдереАред рдореБрдЭреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ <svg> рдЯреИрдЧ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдирд╛ рд░рд╛рдЬреНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ рдлрд┐рд░ рдЬреИрд╕реЗ рд╣реА рд░рд╛рдЬреНрдп рдмрджрд▓ рдЧрдпрд╛, d3 рдПрдирд┐рдореЗрд╢рди рд╢реБрд░реВ рдХрд░реЗрдВ, рдирдП рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ, рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЖрджрд┐ред

рдпрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд▓реЗрдЦ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдкрдиреЗ <svg> рддрддреНрд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрд╛ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ <canvas> , рдФрд░ рдлрд┐рд░ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЕрдкрдиреА рдЧрдВрджреА рдЫреЛрдЯреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рджреВрд░ рд░рдЦреЗрдВ, рдЬрдмрдХрд┐ рдЬрдм рднреА рд░рд╛рдЬреНрдп рдмрджрд▓рддрд╛ рд╣реИ рддрдм рднреА рдЖрдкрдХреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрддрд╛ рд╣реИ:

рдпрд╣рд╛рдБ рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рд╣реИ:

React.createClass({
    render: function() {
        return <svg></svg>;
    },
    componentDidMount: function() {
        d3.select(this.getDOMNode())
            .call(chart(this.props));
    },
    shouldComponentUpdate: function(props) {
        d3.select(this.getDOMNode())
            .call(chart(props));
        return false;
    }
});

рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ shouldComponentUpdate() рд╣рдореЗрд╢рд╛ false рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдХреЗ рдмрд╛рдж DOM рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрднреА рдирд╣реАрдВ рдЫреВрдПрдЧрд╛ред

рдЖрдк рдЕрдкрдиреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб рдкрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде d3 рдХреЙрд▓ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@mindjuice рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдорд┐рд▓реАред рд╡реИрд╕реЗ, рдореИрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рд▓реЗрдЦрдХ рд░реБрдИ-рдЗрдиреНрдлреЛрдЯреНрд░реИрдХ рд╣реВрдВред рдореИрдВ рдкрд╣рд▓реЗ рдХрдВрдкрдиреА рдХреЗ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛...

рдореИрдВ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЖрдкрдХреЛ Redux рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

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

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

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

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

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

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

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