Я использую html fileinput для загрузки файла сactjs, но как только я загрузил файл, я не могу вызвать функцию для загрузки другого файла, если я, конечно, не обновлю страницу.
Упрощенная версиямоего кода будет:
class Matrice extends React.Component {
constructor(props) {
super(props);
this.fileInput = null;
}
uploadQuestion = async e => {
console.log("uploading question");
if (e.target.files[0]) {
const form = new FormData();
let type;
if (e.target.files[0].type == "image/jpeg") type = ".jpg";
if (e.target.files[0].type == "image/png") type = ".png";
if (e.target.files[0].type == "image/gif") type = ".gif";
// const fileName = this.props.current + type;
form.append("files", e.target.files[0]); //filename
form.append("ref", "exam"); // model
form.append("refId", this.props.match.params.id); // id
form.append("field", "media"); // name of field (image field)
this.setState({ questionUploadLoading: true });
const files = await strapi.upload(form);
this.saveMontage(files, undefined, "question");
}
};
render() {
return (
<>
<input
style={{ display: "none" }}
ref={fileInput => (this.fileInput = fileInput)}
onChange={this.uploadQuestion}
className="file"
type="file"
id="imgAdd"
/>
<button
onClick={() => this.fileInput.click()}
type="button"
className="btn btn-secondary"
>
<i className="fas fa-image" />
</button>
</>
);
}
}
Но моя функция uploadQuestion не может быть вызвана снова, как только я закончу загрузку файла.А именно, console.log («загрузка вопроса») не отображается (второй раз).
Я не знаю, в чем может быть причина, но я предполагаю, что что-то мешает обработчику onChangeкак будто загрузка файла во второй раз не «изменяет» триггер.
У кого-нибудь есть идеи, что может вызвать это?
Спасибо