آفلاین
user-avatar

ابجت تو درتو در state

2 سال پیش
توسط محمد توانگر آپدیت شد
آفلاین
user-avatar
محمد ( 18952 تجربه )
2 سال پیش

سلام من چطور متونم آبجکت تو در تو در state داشته باشه برای post کردن دیتا
و همینطور در فرم و Validator صدا بزنم چون الان روی حالت ارور میده

this.state = {
                    fields : {
                        username : '',
                        firstname: '',
                        lastname: '',
                        image:'',
                        vehicle:{
                            name:'',
                            pelak:''
                        }                   
                    },
                    errors : {

                    }
            }

قسمت validator

//vehicle name
            if(validator.isEmpty(fields.vehicle.name)){
                formIsValid = false;
                errors['name'] = "نام خودرو خالی است";
            } else if(! validator.isLength(fields.vehicle.name , { min : 3 , max : 100})) {
                    formIsValid = false;
                    errors['name'] = "فرمت نام خودرو اشتباه است";
            }
handleRequest(){
            const { username } = this.state.fields;
            const { firstname } = this.state.fields;
            const { lastname } = this.state.fields;
            const { name } = this.state.fields.vehicle;
            const { pelak } = this.state.fields.vehicle;

            let officerID = localStorage.getItem('officer_id');

            axios({
                method : 'post',
                url:`http://pand.meandme.ir:4040/officer/${officerID}/driver`,
                data : {
                    username,
                    firstname,
                    lastname,
                    image,
                    vehicle:{
                        name,
                        pelak
                    }
                },
                config:{ headers : {'Accept': 'application/json','Content-Type':'application/json'}}
            })
            .then(response => {
                console.log('success');
                this.props.history.push(`/driver`);
            })
            .catch(error => {
                console.log(error);

            })

    }

@md.tavangar
@hesammousavi

آفلاین
user-avatar
محمد توانگر ( 2259 تجربه )
2 سال پیش
تخصص : برنامه نویس موبایل و وب

سلام
برای validate که فکر میکنم باید فیلدهات رو از state بگیری الان شما همینطوری نوشتین پس فکر نکنم اصلا چیزی بیاره برای ولیدیشن کردن
برای axios هم فکر کنم روش زیر رو انجام بدی بهتره بعدش باید ببینی چه خطایی میده اون خطا رو رفع کنی

let { username,firstname,lastname,name,pelak} = this.state.fields
try{
axios.post(url,{username,firstname,name,pelak})}
catch(error){console.log(error)}

در نهایت توصیه میکنم کدت رو تکه تکه تست کن ببین کجا داری خطا میگیری و دلیلش چیه
روش ارسال تصویرت هم اشتباه هست حالا دقیقا اشاره نکردین ولی اگر میخوای یه تصویر کامل بفرستی اینجوری جواب نمیده

برای ارسال پاسخ باید وارد سایت شوید