Oam*_*nji 7 firebase vue.js vuex google-cloud-firestore
我有一个名为 category 的 firestore 集合。这个集合中的文档被我的 vue 应用程序中的每个页面(路由)使用,所以我认为访问这些数据的最有效方法是在我的 store.js 中有一个类别状态,这样每个组件都可以访问类别状态当它需要而不是每次都从 firestore 中获取时。呈现应用程序时,如何将类别集合的内容设置为我的 vuex 状态?
这是我的 store.js:
import Vue from 'vue'
import Vuex from 'vuex'
const fb = require('./components/firebase/FirebaseConfig.js')
Vue.use(Vuex)
export const store = new Vuex.Store({
state: {
categories: []
},
actions: {
fetchCategories({commit, state}) {
fb.categoriesCollection.get().then((querySnapshot) => {
if (querySnapshot.empty) {
//this.$router.push('/HelloWorld')
} else {
this.loading = false
var categories = []
querySnapshot.forEach((doc) => {
categories.push(doc.data());
})
this.categories = categories
}
})
},
mutations: {
setCategories(state, val) {
state.categories = val
}
}
})
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用以下方法调用 fetchCategories:
this.$store.dispatch('fetchCategories')
Run Code Online (Sandbox Code Playgroud)
但我不确定把它放在哪里。
可以通过商店内的操作获取数据。在操作中提交更改以更新状态。
创建商店后,您可以通过调用立即分派 fetch 操作store.dispatch:
商店.js
import Vue from "vue";
import Vuex from "vuex";
const fb = require("./components/firebase/FirebaseConfig.js");
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
categories: []
},
actions: {
fetchCategories({ commit }) {
fb.categoriesCollection.get().then(querySnapshot => {
if (querySnapshot.empty) {
//this.$router.push('/HelloWorld')
} else {
this.loading = false;
var categories = [];
querySnapshot.forEach(doc => {
categories.push(doc.data());
});
commit("setCategories", categories);
}
});
}
},
mutations: {
setCategories(state, val) {
state.categories = val;
}
}
});
store.dispatch("fetchCategories");
export default store;
Run Code Online (Sandbox Code Playgroud)
本店除报关外应出口
| 归档时间: |
|
| 查看次数: |
3830 次 |
| 最近记录: |