关于action

一般不是应该这样写的吗

actions: {
  increment ({ commit }) {
    commit('increment')
  }
}

那这种写法是什么鬼

async getUserInfo({commit,state}) {//问题一:为什么这里比上面的写法多了一个state
    let res = await getUser();
    commit(GET_USERINFO, res)//问题二:为什么这里多了一个res
}
阅读 2.8k
3 个回答

action本来就可以获得多个参数呀,所以你第一种写法也可以加上state

actions: {
  increment ({ commit, state }) {
    commit('increment')
  }
}

第二个res是commit的参数

文档都写得很清楚了https://vuex.vuejs.org/zh-cn/

举个例子来说

getshowPage({commit}, params){
       Global.SEQGETAxios(
        params.this,
        Apis.PAGE_DATA,
        params.data,
        (res)=>{
          let arrData=res.data.page3_a;
          commit('SHOW_PAGE',arrData[0].title)
        },
        (err)=>{
          console.log("请求失败",err);
        })

},
最后你在组件里面调用的时候来说,params就是传进去的一个参数
this.$store.dispatch('getshowPage',{

    data:{"me":1,"qq":2},
    this:this
  });
因为请求里面需要用到params.data,所以就需要这个参数

补充下res按代码中字面意思,应该是获取用户,用了async、await 意思是得到用户信息(可能是异步)后,在执行commit

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题