У меня есть форма в приложении React, и я хочу редактировать значения, все работает нормально, но я не могу понять, как поступить с изображением.это форма для создания профиля
onSubmit = e => {
e.preventDefault();
const {
handle,
status,
bio,
facebook,
twitter,
youtube,
instagram,
profileImage
} = this.state;
let formData = new FormData();
formData.append("handle", handle);
formData.append("status", status);
formData.append("bio", bio);
formData.append("facebook", facebook);
formData.append("twitter", twitter);
formData.append("youtube", youtube);
formData.append("instagram", instagram);
formData.append("profileImage", profileImage);
this.props.createProfile(formData, this.props.history); };
onChange = e => {
switch (e.target.name) {
case "profileImage":
this.setState({ profileImage: e.target.files[0] });
break;
default:
this.setState({ [e.target.name]: e.target.value });
}
};
и это форма для редактирования
componentDidMount() {
this.props.getCurrentProfile();
}
componentWillReceiveProps(nextProps) {
if (nextProps.errors) {
this.setState({ errors: nextProps.errors });
}
if (nextProps.profile.profile) {
const { profile } = nextProps.profile;
// if empty make empty string
profile.bio = isEmpty(profile.bio) ? "" : profile.bio;
profile.social = isEmpty(profile.social) ? {} : profile.social;
profile.facebook = isEmpty(profile.social.facebook)
? ""
: profile.social.facebook;
profile.twitter = isEmpty(profile.social.twitter)
? ""
: profile.social.twitter;
profile.instagram = isEmpty(profile.social.instagram)
? ""
: profile.social.instagram;
profile.youtube = isEmpty(profile.social.youtube)
? ""
: profile.social.youtube;
profile.profileImage = isEmpty(profile.profileImage)
? ""
: profile.profileImage;
// set to state
this.setState({
handle: profile.handle,
status: profile.status,
bio: profile.bio,
facebook: profile.facebook,
twitter: profile.twitter,
instagram: profile.instagram,
youtube: profile.youtube,
profileImage: profile.profileImage
});
}
}
onSubmit = e => {
e.preventDefault();
const {
handle,
status,
bio,
facebook,
twitter,
youtube,
instagram,
profileImage
} = this.state;
let formData = new FormData();
formData.append("handle", handle);
formData.append("status", status);
formData.append("bio", bio);
formData.append("facebook", facebook);
formData.append("twitter", twitter);
formData.append("youtube", youtube);
formData.append("instagram", instagram);
formData.append("profileImage", profileImage);
this.props.createProfile(formData, this.props.history);
};
onChange = e => {
switch (e.target.name) {
case "profileImage":
this.setState({ profileImage: e.target.files[0] });
break;
default:
this.setState({ [e.target.name]: e.target.value });
}
};
Итак, я могу получить формуполя из состояния и заполните форму редактирования, и я могу отобразить изображение, если я хочу, но я хочу, чтобы изображение оставалось прежним, если пользователь не выбирает новое, текущий код делает изображение пустым, если вы неничего не выбирай.Я надеюсь, что я был ясен.