-
Vuex 기초배우기 #2 (state)front-end/Vue.js 2022. 2. 22. 10:22728x90
state는 data
vuex의 store는 자주 사용할 데이터들을 관리하는 상태 관리 라이브러리이다.
(게임에서 창고 같은 거, 어디서나 필요한 것들을 꺼내쓸 수 있다)
먼저 AllUsers.vue에 있는 allUsers 배열은 사용자들의 정보를 담고 있었다.
store로 보내기 딱 좋다.
Allusers.vue의 data()에서 allUsers 배열을 store로 옮긴다.
src/store.js
import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); export default new Vuex.Store({ state: { allUsers: [ { userId: "hoza123", password: "123", name: "Hoza", address: "Seoul", src: "https://goo.gl/oqLfJR", }, { userId: "max123", password: "456", name: "Max", address: "Berlin", src: "https://goo.gl/Ksk9B9", }, { userId: "lego123", password: "789", name: "Lego", address: "Busan", src: "https://goo.gl/x7SpCD", }, ], }, mutations: {}, actions: {}, });
state는 data들을 담아놓는 곳이다.
배열도 data이기에 state에 그대로 옮겨놓으면 된다.이제 store에 있는 allUsers 배열에 대한 정보를 편하게 꺼내서 쓰면 된다.
이때 사용하는 법이 있다.
src/main.js
import Vue from 'vue' import './plugins/vuetify' import App from './App.vue' import router from './router' import store from './store' Vue.config.productionTip = false export const EventBus = new Vue() new Vue({ router, store, render: h => h(App) }).$mount('#app')
앞서 vuex와 이를 사용하기 위한 store를 main.js에서 선언해주었다.
선언된 위치는 Vue 인스턴스이다.
그렇기에 Vue인스턴스에 접근하여 store를 사용하기 위해서는 $ 를 사용하여 접근한다
src/components/Users/AllUsers.vue
<template> <div> <h1>All Users</h1> <v-list two-line> <v-list-tile v-for="(user, index) in $store.state.allUsers" :key="index" avatar > <v-list-tile-avatar color="grey lighten-3"> <img :src="user.src" /> </v-list-tile-avatar> <v-list-tile-content> <v-list-tile-title v-html="user.name"></v-list-tile-title> <v-list-tile-sub-title >id:#{{ index }} / {{ user.address }} 거주</v-list-tile-sub-title > </v-list-tile-content> </v-list-tile> </v-list> </div> </template> <script> import { EventBus } from "@/main.js"; export default { data() { return {}; }, mounted() { EventBus.$on("signUp", (users) => { this.$store.state.allUsers.push(users); }); }, }; </script>
현재 allUsers 배열은 state안에 있기 때문에
$store.state.allUsers로 접근하였다data를 store에 저장하고 싶다면 state
기억하자
728x90'front-end > Vue.js' 카테고리의 다른 글
Vuex 기초배우기 #6 (actions) (0) 2022.02.23 Vuex 기초배우기 #5 (mutations) (0) 2022.02.22 Vuex 기초배우기 #4 (mapState, mapGetters) (0) 2022.02.22 Vuex 기초배우기 #3 (getters) (0) 2022.02.22 Vuex 기초배우기 #1 (0) 2022.02.22