주입
현재 코드로는 컴포넌트에서 스토어를 사용할 때마다 store
를 불러와 사용해야 합니다.
// components/BookList.vue
import store from "@/store";
export default {
name: "BookList",
data() {
return {
loading: false
};
},
computed: {
books() {
return store.getters.availableBooks;
}
},
created() {
this.loading = true;
store.dispatch("fetchBooks").then(() => (this.loading = false));
}
};
다수의 컴포넌트에서 스토어를 사용할 때 매번 store
를 불러들이는 과정 없이
바로 사용할 수 있도록 하는 Vue 애플리케이션에 주입(Injection) 방법을 알아봅니다.
스토어 주입
main.js
파일을 열어 스토어(store
)를 불러와 Vue()
코드 내부에 주입합니다.
// main.js
import store from './store';
new Vue({
store,
render: h => h(App)
}).$mount('#app);
Vue 애플리케이션에 스토어 객체가 주입되면? 스토어를 불러오는 과정 없이
모든 컴포넌트에서 $store
인스턴스 속성으로 접근할 수 있습니다.
// components/BookList.vue
export default {
name: "BookList",
data() {
return {
loading: false
};
},
computed: {
books() {
return this.$store.getters.availableBooks;
}
},
created() {
this.loading = true;
this.$store.dispatch("fetchBooks").then(() => (this.loading = false));
}
};