#javascript #reactjs #filereader
#javascript #reactjs #filereader
Вопрос:
У меня есть простой компонент react, в этом суть компонента:
<input ref={inputRef} type="file" hidden onChange={imageSelected} />
<Button
onClick={() => inputRef.current.click()}
icon="upload"
size="big"
style={{ margin: 0, marginRight: "2px" }}
fluid
color="green"
/>
Это функция onChange:
const imageSelected = (ev) => {
if (ev.target.files amp;amp; ev.target.files[0]) {
const reader = new FileReader();
reader.onload = (e) => {
console.log(e.target.result);
};
}
};
Я не получаю никаких выходных данных на консоль, загрузка не запускается, потому что, почему это?
Комментарии:
1. Итак, где вы устанавливаете источник? Нет никаких причин для запуска события load, если вы никогда не указываете ему, что читать.
2. Он не принимает никаких параметров @epascarello
3. Но вы должны вызвать метод, чтобы сообщить ему, что читать….
Ответ №1:
Вы не указываете ему, что читать. Я предполагаю, что это изображение из именования, поэтому вы должны использовать readAsDataURL
const imageSelected = (ev) => {
const file = ev.target.files amp;amp; ev.target.files[0];
if (file) {
const reader = new FileReader();
reader.addEventListener("load", function () {
cosole.log(reader.result);
}, false);
reader.readAsDataURL(file);
}
}
запуск примера
const inp = document.querySelector('[type="file"]');
const img = document.querySelector('img');
const imageSelected = (ev) => {
const file = ev.target.files amp;amp; ev.target.files[0];
if (file) {
const reader = new FileReader();
reader.addEventListener("load", function () {
img.src = reader.result;
}, false);
reader.readAsDataURL(file);
}
}
inp.addEventListener("change", imageSelected);
<input type="file">
<img >
Комментарии:
1. О, так что я довольно глуп, спасибо, лол, не знаю, как я пропустил эту строку, думаю, время отладки потрачено не зря…