gpt4 book ai didi

vue.js - 如何将 asyncData 外包给 Vuex Store?

转载 作者:行者123 更新时间:2023-12-05 05:11:26 28 4
gpt4 key购买 nike

我目前正在从 firebase 加载一些数据,我不想在服务器端呈现,因此可以在页面上的 asyncData 中为 SEO 编制索引。

asyncData() {
return firebase.firestore().collection('Programms').get().then((querySnapshot) => {
const programms = [];
querySnapshot.forEach((doc) => {
const programm = doc.data();
programm.id = doc.id;
programms.push(programm)
})
return { programms: programms};
})

但是我想将其转换为我的 vuex 存储。

我知道我可以做到:

const actions = {
async nuxtServerInit({ commit }) {
firebase.firestore().collection('Programms').onSnapshot((querySnapshot) => {
const programms = [];
querySnapshot.forEach((doc) => {
const programm = doc.data();
programm.id = doc.id;
programms.push(programm)
})
console.log('loaded Programms', programms)

commit('setProgramms', programms);
})
},
}

但这样我的应用程序中的每条路线都会加载数据。我不想只在我也显示它的某些页面加载这些数据,所以我不会加载它不必要的。

我如何在 Vuex 中执行此操作?

最佳答案

正如@aldarund 所说,fetch 方法正是您想要的。

fetch ({ store, params }) {
return firebase.firestore().collection('Programms').get().then((querySnapshot) => {
const programms = [];
querySnapshot.forEach((doc) => {
const programm = doc.data();
programm.id = doc.id;
programms.push(programm)
})
.then(() => {
store.commit('setPrograms', programms)
})
}

查看文档 here .

关于vue.js - 如何将 asyncData 外包给 Vuex Store?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com