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 اپند کنید هم title ,description ,.. و در نهایت اون formData را بفرستین
data() {
return {
form: new Form({
name: '',
image: '',
bio: '',
username: '',
tags:'',
}),
};
},
send() {
let profile = new FormData();
this.form.keys().forEach(key => {
profile.append(`${key}`, this.form[key]);
});
this.$store.dispatch('your action',profile)
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟