Vuex рдореЗрдВ рдЧреЗрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрд╕

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


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


рднрдВрдбрд╛рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:


state: { films: [ { id: 1, name: ' ' }, { id: 2, name: ' ' }, { id: 3, name: ' 60' }, ], }, getters: { films: state => state.films, }, 

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


 computed: { films() { return this.$store.state.films; }, }, 

рдпрд╛ mapState рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк:


 computed: { ...mapState(['films']), }, 

рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдРрд╕реЗ рддрд░реАрдХреЗ рдХреЛ рдЕрдкрдирд╛рдПрдВ, рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдзрд┐рднрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред


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


рдПрдХ рд╕рд┐рдВрдЧрд▓ рдХреЗрд╕ рдХреЗрд╕ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдЯреНрдЯрд░ рдмрдирд╛рдПрдВ


рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЬреЗрдореНрд╕ рдмреЙрдиреНрдб рдлрд┐рд▓реНрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ:


 getters: { bondFilm: state => state.films .find(f => f.name === ' ') || {}, }, 

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдлрд┐рд░ рд╕реЗ рдореИрдкрд╕реНрдЯреИрдЯ рдХреА рдУрд░ рд░реБрдЦ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ


 computed: { ...mapState({ bondFilm: state => state.films .find(f => f.name === ' ') || {}, }), }, 

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


рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЧреЗрдЯрд░реНрд╕ рдмрдирд╛рдПрдВ


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


 getters: { filmById: state => id => state.films .find(film => film.id === id) || {}, }, 

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдЧрдЯрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЖрдкрдХреЛ рджреЗ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 getters: { filmsById: (state) => { const result = {}; state.films.forEach((film) => { result[film.id] = film; }); return result; }, }, 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрдЧреА, рдФрд░ рдЖрдк рдЖрдИрдбреА рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛


  • рд╕рд░рд▓ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рди рдмрдирд╛рдПрдВ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЧреЗрдЯрд░реНрд╕ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╡реНрдпреБрддреНрдкрдиреНрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рд▓реЙрдЬрд┐рдХ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рддрд░реНрдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рдкрд░рд┐рдЪрд╛рд▓рд┐рдд рдЧреЗрдЯрд░реНрд╕ рдЕрдкрдиреА рдореБрдЦреНрдп рд╕рдВрдкрддреНрддрд┐ - cacheability рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдмрд╛рд░ рд╕реЛрдЪреЗрдВ
  • MapState рдХрд╛ рдкреВрд░рд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдореИрдкрдЧреЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХрд░реВрдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ

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

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


All Articles