рдорд╛рд╕реНрдЯрд░реАрдВрдЧ рд╡реЗрдХреНрд╕ - рдЬреАрд░реЛ рд╕реЗ рд╣реАрд░реЛ рддрдХ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдирде рдХреБрдорд╛рд░ рдХреЗ рд▓реЗрдЦ тАЬMastering Vuex - Zero to HeroтАЭ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдБред


Vuex рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЗрд╕реЗ Vue.js. рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдкреИрдЯрд░реНрди + рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдкреИрдЯрд░реНрди рдХреНрдпрд╛ рд╣реИ?


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



рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдпрд╛ рдорд╛рд░реНрдЧ Vuex рд░рд╛рдЬреНрдп рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдЧрд╛ред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, Vuex рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рддреНрдп рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдбреЗрдЯрд╛ рдХреЛ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


state: { name: "John Doe", age: "28" } 

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


 getters: { NAME: state => { return state.name; }, } 

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


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


 let name = this.$store.getters.NAME; 

рд╣рдордиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рднрдВрдбрд╛рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП ред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдмрд╕рдиреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╣реИ рдирд╛? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Vuex рдмрд╕рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ Vuex рд░рд╛рдЬреНрдп рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореНрдпреВрдЯреЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


 mutations: { SET_NAME: (state, payload) => { state.name = payload; }, } 

рдкреЗрд▓реЛрдб рдФрд░ рдХреНрдпрд╛ рд╣реИ? рдкреЗрд▓реЛрдб рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЙрд╕ рдШрдЯрдХ рд╕реЗ рд╕рдВрдЪрд░рд┐рдд рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдмрдирд╛рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдмрд╣реБрдд рд╕рд░рд▓:


 this.$store.commit('SET_NAME', your_name); 

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


MUTATIONS SYNCHRONOUS


рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рд╕рд░реНрд╡рд░ рд╣рдореЗрдВ рдПрдХ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрди рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ Vue.js. рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд╣рдо рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 let {data} = await Axios.get('https://myapiendpoint.com/api/names'); 

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


рдлрд┐рд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдБред


рдХреНрд░рд┐рдпрд╛рдПрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд░рд╣ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдп рдХреЛ рд╕реАрдзреЗ рдмрджрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВред рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИ? рдЖрдЗрдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦреЗрдВред


 actions: { SET_NAME: (context, payload) { context.commit('SET_NAME', payload); }, } 

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


рдЕрдм, рд╣рдорд╛рд░реЗ рдореНрдпреВрдЯреЗрд╢рди рдХреЛ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдП рдирд╛рдо рдХреЗ рд╕рд╛рде SET_NAME рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:


 this.$store.dispatch('SET_NAME', your_name); 

рдлрд┐рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореНрдпреВрдЯреЗрд╢рди рдХреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдкрдХрд╛_рдирд╛рдо ред



рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ?


рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рд╕реАрдзреЗ рдПрдХ рдирдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдореНрдпреВрдЯреЗрд╢рди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореНрдпреВрдЯреЗрд╢рди рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВред


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


 mutations: { SET_NAME: (state, name) => { state.name = name; }, }, actions: { SET_NAME: async (context, name) => { let {data} = await Axios.post('http://myapiendpoint.com/api/name', {name: name}); if (data.status == 200) { context.commit('SET_NAME', name); } }, } 

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


рдЯрд┐рдХрдЯреЗрдВ рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА-рдХрднреА рджрдмрд╛рд╡ рдореЗрдВ рднреА рд▓реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдПред



Vue.JS рдореЗрдВ Vuex Storage рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рдЖрдЗрдП рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЧреЛрддрд╛ рд▓рдЧрд╛рдПрдБ рдФрд░ рдЬрд╛рдиреЗрдВ рдХрд┐ рд╣рдо рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ Vuex рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЪрд░рдг 1. Vuex рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


 npm install --save vuex 

рдЪрд░рдг 2. рдПрдХ Vuex рднрдВрдбрд╛рд░ рдмрдирд╛рдирд╛


  1. рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдЬрдбрд╝ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБред
  2. рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ index.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдПрдХ рдирдпрд╛ рднрдВрдбрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

 import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); export const store = new Vuex.Store({ state: {}, getters: {}, mutations: {}, actions: {}, }); 

рдЪрд░рдг 3. Vue.JS рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ Vuex рд╕рдВрдЧреНрд░рд╣рдг рдЬреЛрдбрд╝рдирд╛


1. рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЛ main.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ:


 import {store} from './store'; 

2. Vue рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рдг рдЬреЛрдбрд╝реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 new Vue({ el: '#app', store, router, render: h => h(App), }); 

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



рдЙрджрд╛рд╣рд░рдг


рдПрдХ рд╕рд░рд▓ рдЯреВ-рдбреВ рд╕реВрдЪреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ Vuex рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред "рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рд╕реВрдЪреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ !!!"ред рд╣рд╛рдБ? рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ Vuex рдХреА рдкреВрд░реНрдг рд╢рдХреНрддрд┐ рдФрд░ рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред


 import Vue from 'vue'; import Vuex from 'vuex'; import Axios from 'axios'; Vue.use(Vuex); export const store = new Vuex.Store({ state: { todos: null, }, getters: { TODOS: state => { return state.todos; }, }, mutations: { SET_TODO: (state, payload) => { state.todos = payload; }, ADD_TODO: (state, payload) => { state.todos.push(payload); }, }, actions: { GET_TODO: async (context, payload) => { let {data} = await Axios.get('http://yourwebsite.com/api/todo'); context.commit('SET_TODO', data); }, SAVE_TODO: async (context, payload) => { let {data} = await Axios.post('http://yourwebsite.com/api/todo'); context.commit('ADD_TODO', payload); }, }, }); 


рдЯреВ-рдбреВ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ


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


 let item = 'Get groceries'; this.$store.dispatch('SAVE_TODO', item); 

SAVE_TODO рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ ADD_TODO рдореНрдпреВрдЯреЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ , рдЬреЛ todos рд╕реНрдерд┐рддрд┐ рдЪрд░ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдХрд░рддреЗ рд╣реИрдВред



рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЗрдЯрдо рдирд╣реАрдВ рд╣реИ


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


 mounted() { this.$store.dispatch('GET_TODO'); } 


рдПрдХ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХреНрд╕реЗрд╕-рдЯреВ рдЖрдЗрдЯрдо


рдПрдХ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ todos рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдЧрдгрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдПрдБ:


 computed: { todoList() { return this.$store.getters.TODOS; }, } 

рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:


 <div class="todo-item" v-for="item in todoList"></div> 


MapGetters рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


Vuex рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдореИрдкрдЧреЗрдЯрд░реНрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдЯреВ-рдбреВ рдЖрдЗрдЯрдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред


 import {mapGetters} from 'vuex'; computed : { ...mapGetters(['TODOS']), //    } 

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


 <div class="todo-item" v-for="item in TODOS"></div> 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕рдВрдХрд▓рд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рдЕрдВрджрд░ ES6 рд╡рд┐рддрд░рдг рдСрдкрд░реЗрдЯрд░ [...] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ред


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


рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╣рд╛рдВ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ?


рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрдк рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред


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



рдХреЛрдб рд╕рдВрдЧрдарди


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


рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЕрдВрджрд░ рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рджреЗрдВред рдирд┐рдореНрди рдХреЛрдб рд╡рд╛рд▓реА рдмрдирд╛рдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ todos.js рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:


 const state = {}; const getters = {}; const mutations = {}; const actions = {}; export default { state, getters, mutations, actions, }; 

рдЕрдм рд╣рдо рдЗрдВрдбреЗрдХреНрд╕ рдЪрд░, рдЧреЗрдЯрд░реНрд╕, рдореНрдпреВрдЯреЗрд╢рди рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ index.js рдлрд╝рд╛рдЗрд▓ рд╕реЗ todos.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдзреБрд░реА рдЖрдпрд╛рдд рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред рд╣рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ Vuex рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдордиреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╣рд╛рдВ рдвреВрдВрдврдирд╛ рд╣реИред рдЕрджреНрдпрддрди рдХреА рдЧрдИ index.js рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:


 import Vue from 'vue'; import Vuex from 'vuex'; import Axios from 'axios'; import todos from './modules/todos'; Vue.use(Vuex); export const store = new Vuex.Store({ state: {}, getters: {}, mutations: {}, actions: {}, modules: { todos, }, }); 

Todos.js рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:


 import Axios from 'axios'; state = { todos: null, }; getters = { TODOS: state => { return state.todos; }, }; mutations = { SET_TODO: (state, payload) => { state.todos = payload; }, ADD_TODO: (state, payload) => { state.todos.push(payload); }, }; actions = { GET_TODO: async (context, payload) => { let {data} = await Axios.get('http://yourwebsite.com/api/todo'); context.commit('SET_TODO', data); }, SAVE_TODO: async (context, payload) => { let {data} = await Axios.post('http://yourwebsite.com/api/todo'); context.commit('ADD_TODO', payload); }, }; export default { state, getters, mutations, actions, }; 


рд╕рд╛рд░рд╛рдВрд╢


  1. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рдмрдбрд╝реА JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИрдВред
  4. рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рднреАрддрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдкрд░рд┐рд╡рд░реНрддрди рдЕрд╡рд╕реНрдерд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред
  5. рдЗрд╕реЗ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдмрдирд╛рдПрдВред
  6. рдХрдИ рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Vuex Vue рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рдордЬреЗрджрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ Vuex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдирд╣реАрдВред рдЕрдкрдиреА рд╡реГрддреНрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдЖрдк рдмрд╣реБрдд рдЬрд▓реНрджреА рдЙрдЪреНрдЪ рдЧрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВрдЧреЗред

Source: https://habr.com/ru/post/hi421551/


All Articles