У меня есть этот код в /store/options.js:

export default {
  state: {
    lang: 'en',
    customOptions: {},
  },
  mutations: {
    setOptions(state, { options, id, lang }) {
      state.customOptions = options
    },
  },
  actions: {
    async fetchOptions(
      {
        state: { lang },
        commit,
      },
      { id }
    ) {
      const customOptions = await this.$axios.$get(
        `https://api.my-project.com/wp-admin/admin-ajax.php?action=get_custom_options`
      )

      commit('setOptions', { customOptions, id, lang })
    },
  },
}

В котором я собираюсь сохранить объект (возвращает действительный json) в store.context.customOptions

Но вот что store.state регистрирует:

{
  options: {
    lang: 'en',
    customOptions: {} // <------- empty
  },
  // ....
}

Я не вижу никаких ошибок в консоли.

0
Toni Michel Caubet

1 ответ

Ну, я могу показать вам, как я бы это сделал:

я хотел бы создать index.js в папке моего магазина и записать это в нем:

import axios from "axios"
export const state = () => ({
   lang: 'en',
   customOptions: {},
})

export const mutations = {
    setOptions: function(state, { options, id, lang }) {
    state.customOptions = options
    },
},

export const actions = {

  nuxtServerInit(vuexContext, context){
     return axios.get("https://api.my-project.com/wp-admin/admin-ajax.php?action=get_custom_options")
     .then(data => {
        console.log(data)
        vuexContext.commit('setOptions', data)
     })
  },
}

Это модульный способ сделать это