Итак, я пытаюсь заставить Nuxt запрашивать мой GQL API для меню сайта. Я делаю это с помощью функции nuxtServerInit
в моем модуле хранилища index.js
.
Вот так:
menuLocations = ["MAIN_MENU", "WORK_MENU"]
store.dispatch("menus/QUERY_MENUS", menuLocations)
Это вызывает мое действие QUERY_MENUS
из модуля хранилища menus.js
. Код для этого такой:
// Define State defaults
export const state = () => ({
locations: {}
})
// Define mutations
export const mutations = {
SET_MENU(state, data) {
//Vue.set(state.locations, data.location, data.items)
//state.locations = { ...state.locations, [data.location]: data.items }
}
}
// Define actions
export const actions = {
async QUERY_MENUS({ commit }, menuLocations) {
let client = this.app.apolloProvider.defaultClient
// Get each menu from server
for (const location of menuLocations) {
const query = await client.query({
query: MenuByLocation,
variables: {
location: location
}
})
// Commit menu to store
commit("SET_MENU", {
location: _camelCase(location),
items: _get(query, "data.menuItems.nodes", {})
})
}
}
}
Проблема в том, что обе закомментированные строки в SET_MENU
не работают надежно (без комментариев), иногда они работают, иногда нет. Я предполагаю, что это связано с Nuxt и SSR, или, возможно, я неправильно делаю свои async / await?
КОД ПЕСОЧНОГО ЯЩИКА ЗДЕСЬ:
Код: https://codesandbox.io/s/j3yjz2wm6y?fontsize=14.
Предварительный просмотр: https://j3yjz2wm6y.sse.codesandbox.io/
Какие-либо предложения? Спасибо!
_get
асинхронным? Похоже, этого нужно подождать ... - person Steven Spungin   schedule 02.05.2019