vuex.esm.js?edaa:336 [vuex] unknown action type: popup/loading/hideLoading
发布于 7 年前 作者 moxiaobei2 5820 次浏览 最后一次编辑是 7 年前 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

###我在vuex当中采用了命名空间的形式 并且双向绑定 /store/module/a.js var config = require("…/…/utils/config.js"); var util = require("…/…/utils/index.js");

  import axios from 'axios';
 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
 axios.defaults.baseURL = config.hostUrl
import qs from 'qs';


 export default {
namespaced: true, //命名空间
namespace: 'a/',
state: {
    resultVo: null,
    stationVo: null,
    stationVoSelected: null,
    startDate: null
 },
 mutations: {
    setOptions: function(state, params) {
        state = Object.assign(state, params); //合并
    }
   },
  actions: {
    getOptions({ dispatch, commit, state }) {
        var params = {};
        params.startDate = util.formatDate(new Date("2017-04-24"), "yyyy-MM-dd");
        axios.get("/getOptions.do").then(response => {
            params.stationVo = response;
            params.stationVoSelected = response[2].value;
            dispatch('changeOptions', params);
        });

    },
    changeOptions({ dispatch, commit, state }, params) {
        if (params.startDate)
            params.startDate = util.formatDate(new Date(params.startDate), "yyyy-MM-dd");
        params = Object.assign(state, params); //合并
        var queryString = { ddate: params.startDate, stacode: params.stationVoSelected };
        var url = "/getResult.do?" + qs.stringify(queryString);
        axios.get(url).then((response) => {
            params.resultVo = response;
            commit('setOptions', params);
        });
        },
     }
  }
      vue view 里面如下:
      import {
       mapState,
       mapActions
       } from 'vuex';
     export default {
        name: "xx", 
       created() {
        this.getOptions();
      },
       computed: {
       ...mapState('a', [ //记住命名空间
         'resultVo',
         'stationVo'
       ]),
      "startDate": {
         set(value) {
            if(value)
              this.changeOptions({
             "startDate": value
           })
        },
        get() {
          return this.$store.state.a.startDate;
         }
       },
       'stationVoSelected': {
            set(value) {
         if(value)
              this.changeOptions({
              'stationVoSelected': value,
           });
        },
        get() {
            return this.$store.state.a.stationVoSelected;
          }
       },
         },
     data() {
     return {
    contenteditable: false,
    showEdit: false
     };
    },
methods: {
  ...mapActions('a', [ // 找命名空间为test的add方法
    'getOptions',
    'changeOptions'
     ]),
    }
 }

####那么问题来了,我更改了组件里面的条件,内容能渲染,却报[vuex] unknown action type: popup/loading/hideLoading的错,这个有影响吗?要怎么解决,即changeOptions方法执行之后 store里面的值会更新,但是报错。不知道这axios放在这到底合适不合适,奔溃。

回到顶部