В общем есть форма реализованная через react-hook-form (но я так же пробовал и без него посредством простой формы)
const onSubmit: SubmitHandler<ICreateProduct> = (data) => {
dispatch(createProduct(data));
}
return (
<form className={styles.root} onSubmit={handleSubmit(onSubmit)}>
<Stack>
<span>Название</span>
<input type="text" {...register('name')}/>
</Stack>
<Stack>
<span>Цена</span>
<input type="number" {...register('price')}/>
</Stack>
<Stack>
<span>Рейтинг</span>
<input type="number" {...register('rating')}/>
</Stack>
<Stack>
<span>Описание</span>
<input type="text" {...register('description')}/>
</Stack>
<Stack>
<span>Изображение</span>
<input type="file" {...register('image')}/>
</Stack>
<Stack>
<span>Категория</span>
<input type="number" {...register('categoryId')}/>
</Stack>
<input type="submit"/>
</form>
А вот запрос на сервер через createAsyncThunk
export const createProduct = createAsyncThunk<IProductCreated, ICreateProduct>(
'products/createProduct',
async ({name, price, rating, description, image, categoryId}, {rejectWithValue}) => {
try {
console.log({
name, price, rating, description, image, categoryId
})
const formData = new FormData();
formData.append('name', name);
formData.append('price', String(price));
formData.append('rating', String(rating));
formData.append('description', description);
formData.append('image', image);
formData.append('categoryId', String(categoryId));
const response = await $api_file.post('api/product', formData);
return response.data;
} catch (error: any) {
if (error.response && error.response.data.message) {
return rejectWithValue(error.response.data.message);
} else {
return rejectWithValue(error.message);
}
}
}
)
там где я поставил console.log в этом месте выводит следующие данные в консоль (сделал для наглядности что попадает в FormData:
И при всем этом возникает ошибка при сабмите которая приходит с сервера:
message: "Cannot read properties of null (reading 'image')"
Через Postman отправляю все работает. В чем тут дело?