javascript - 为什么vuex的actions传的第二个参数是undefined?
PHP中文网
PHP中文网 2017-04-11 10:10:00
[JavaScript讨论组]

actions.js:

export const fetchRoomLists = ({commit}, cname, limit) => {
  const url = `/live/${cname}`
  const query = `offset=0&limit=${limit}`
  return _get({ url, query }, commit)
    .then((json) => {
      if (json.error === 0) {
        // return commit('FETCH_ROOM_LIST_SUCCESS', json.data)
        console.log(query)
      }
      return Promise.reject(new Error('FETCH_ROOM_LIST_SUCCESS failure'))
    })
    .catch((error) => {
      return Promise.reject(error)
    })

在vue文件的dispatch:

mounted () {
  this.$store.dispatch('fetchRoomLists', this.$route.params.id, 30)
},

console出来是这样的:

有谁知道是什么问题么?搞半天没搞懂?明明定义了,但是第二个参数一直是undefined,但是一个参数又不会~

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(5)
怪我咯
//template
<el-button type="text" @click="checkDialog('goodsBox','商品列表')">商品box</el-button>

//methods
checkDialog:function(components,title){
  var obj ={};
//为了避免action传多个参数会undefined的情况,把所有变量装到一个对象里传过去
  obj.components= components;
  obj.title = title;
  store.commit("openDialog",obj);
}

//vuex
openDialog:function(state,obj){
   state.dialog.visible = !state.dialog.visible;
   state.dialog.title =obj.title;
   state.dialog.current = obj.components;
}
伊谢尔伦

代码貌似没有贴全,不知道你的action有没有在vuex中注册,然后是调用action派发mutation,然后在那个调用action的函数中打印一下$route看看是不是组件生命周期的问题

伊谢尔伦

看样子你用的是vue2,那么问题来了,从源码看(当然从api文档看也一样),dispatch最多就只接受两个参数,typepayload,所以你说你传的, 30总是undefined对吧?那就对了,

源码地址:vuex

文档地址:vuexstore-methods

怪我咯

请问题主是如何解决的

巴扎黑
this.$store.dispatch('fetchRoomLists',[this.$route.params.id, 30]);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号