Неизвестный тип действия vuex при попытке отправить действие из компонента vuejs - PullRequest
0 голосов
/ 16 января 2019

Я использую laravel, vue и vuex в другом проекте с почти идентичным кодом, и он отлично работает.Я пытаюсь адаптировать то, что я сделал там, к этому проекту, используя этот код в качестве шаблона, но я продолжаю получать сообщение об ошибке:

[vuex] unknown action type: panels/GET_PANEL

У меня есть index.js в каталоге магазина, который затем импортируетМодули хранилищ в пространстве имен, чтобы сохранить порядок:

import Vue from "vue";
import Vuex from "vuex";
var axios = require("axios");

import users from "./users";
import subscriptions from "./subscriptions";
import blocks from "./blocks";
import panels from "./panels";

Vue.use(Vuex);
export default new Vuex.Store({

  state: {
  },
  actions: {

  },
  mutations: {

  },
  modules: {
    users,
    subscriptions,
    blocks,
    panels
  }
})

Panel.js:

 const state = {
    panel: []
  }

  const getters = {
  }
  const actions = {
    GET_PANEL : async ({ state, commit }, panel_id) => {
      let { data } = await axios.get('/api/panel/'+panel_id)
      commit('SET_PANEL', data)
    }
  }

  const mutations = {
    SET_PANEL (state, panel) {
      state.panel = panel
    }
  }

export default {
  namespaced: true,
  state,
  getters,
  actions,
  mutations
}

Ниже приведен раздел скрипта из моего компонента vue:

<script>
import { mapState, mapActions } from "vuex";
export default {
  data () {
    return {
    }
  },
  mounted() {
    this.$store.dispatch('panels/GET_PANEL', 6)
  },
  computed: 
    mapState({
      panel: state => state.panels.panel
  }),
  methods: {
    ...mapActions([
      "panels/GET_PANEL"
    ])
  }
}
</script>

И вот соответствующий код из моего app.js:

import Vue from 'vue';
import Vuex from 'vuex'
import store from './store';
Vue.use(Vuex)

const app = new Vue({
  store: store,
}).$mount('#bsrwrap')

UPDATE :: Я попытался просто записать начальное состояние из vuex, и я получаю: Ошибка в подключенном хуке: "ReferenceError: панельне определено. Я попытался создать другие, очень базовые компоненты, используя другое хранилище модулей, и там тоже не повезло. Я проверил свою последнюю версию vuex, 3.1.0, последнюю. Кажется, что-то в app.js или хранилище, так как проблема сохраняетсячерез несколько модулей.

1 Ответ

0 голосов
/ 29 марта 2019

Когда у вас есть модуль пространства имен, используйте следующее отображение:

...mapActions("panels", ["GET_PANEL"])

Где первый аргумент - это пространство имен модуля, а второй - массив действий для сопоставления.

...