Почему не передаются параметры при PUT запросе в vue axios

Я отправляю PUT запрос при помощи axios вот таким образом

update(resource, slug, params) {
        return Vue.axios.put(`${resource}/${slug}`, params);
    },
export const CampaignUpdateService = {
    get(slug) {
        return ApiService.get('campaigns/update', slug)
    },

    update(slug, params) {
        return ApiService.update('campaigns/update', slug, {params})
    }

}

в модуле

[UPDATE_CAMPAIGN]({commit}, slug, params) {
        console.log(slug)
        return CampaignUpdateService.update(slug, params)
            .then((response) => {
                commit(SET_CAMPAIGN, response.data)
            })
    }

и вызываю в компонентe

fetchUpdateCampaign() {
                this.$store.dispatch(UPDATE_CAMPAIGN, this.slug, this.listConfig.filters)
            },

запрос уходит но его тело это пустой массив, а iDE подсказывает Argument type {name: string, tel: number, email: string} is not assignable to parameter type DispatchOptions | undefined Что я делаю не так, в чем может быть ошибка console.log(this.listConfig.filters) показывает что данные есть???


Ответы (1 шт):

Автор решения: yar85

Действия Vuex выделяют только один параметр для пользовательских данных. То есть, всего у действий есть два параметра (context, payload) - соответственно, и при вызове действия через dispatch ожидается только один аргумент с данными, а всего параметров у метода dispatch три (actionType, payload, options).
Передавать в dispatch больше одного аргумента с данными - бесполезно: третий аргумент будет воспринят как необязательный объект опций, а оставшиеся (четвертый, пятый, и так далее) будут просто проигнорированы.
Когда пэйлоадом нужно передать в действие несколько значений, их следует помещать в массив или объект.


Действие Vuex (с деструктуризацией второго аргумента, где ожидается объект):

[UPDATE_CAMPAIGN]({ commit }, { slug, params } = {}) {
  return CampaignUpdateService.update(slug, params).then((response) => {
    commit(SET_CAMPAIGN, response.data);
  });
},

Вызов этого действия из метода компонента, соответственно:

fetchUpdateCampaign() {
  this.$store.dispatch(UPDATE_CAMPAIGN, {
    slug: this.slug,
    params: this.listConfig.filters,
  });
},
→ Ссылка