action به این صورت تعریف شده
storePost ({commit, dispatch}, {form,formData}) {
commit('STORE_POST')
return new Promise((resolve, reject) => {
axios.post(Config.apiPath + 'post', form,{ formData })
.then(
response => {
commit('STORE_POST_OK', response.data.post);
resolve()
})
.catch(error => {
commit('STORE_POST_FAIL')
reject(error.response.data)
})
})
},
داخل کامپوننت هم به این صورت تعریف کردم
let formData = new FormData();
formData.append('file', this.form.file);
this.storePost({formData,form})
.then(() => {
this.addToastMessage({
text: 'New Post record was added!',
type: 'success'
})
this.errors = {}
})
.catch((data) => {
this.errors = data.errors || {}
})
},
ولی این ارور دریافت میکنم
payload: undefined
دوستان ممنون میشم راهنمایی کنید
سلام
برای اکشن تنها باید یک پارامتر پاس داده بشه مثلا payload و اگر مثل شما چندتا چیز خواستین بفرستین باید کلا اون را داخل یه آبجکت بریزین و بعد آبجکت را به عنوان payload ارسال کنید حالا در مورد شما باید اون مدیایی که میخواین بفرستین و بقیه اطلاعات فرم رو کلا با هم در formdata بایند کنید و در نهایت او formdata را بفرستین
میشه نمونه کد رو هم بفرستید
شاید پاسخ شما همینجا باشد
دوستان لطفا راهنمایی کنید
@kiomars.geytasii
سلام شما مثلا یه فرم دارین که شامل name , username, image میشه حالا برای هرکدوم از اینها یه property تو data کامپوننت درست کردی و وقتی کاربر دکمه send زد یه اکشن dispatch میکنی حالا برای ارسال پارامتر به این اکشن میای یه متغییر میسازی به نام مثلا formdata و اونو مساوی FormData میگذاری بعد هر کدوم از این پروپرتی ها رو به این فرم دیتا پاس میدی
let formData=new FormData()
formData.append('name',this.name)
و همینجوری کل اطلاعات را بهش بایند میکنی و بعد اون متغییر رو به اکشن پاس میدی
this.$store.dispatch('storePost',formData)formData رو فقط برای پروپرتی file میخام
اوکی امتحان میکنم
این ارور دریافت میکنم
key is not defined