#excel #reactjs
#преуспеть #reactjs
Вопрос:
Я пытаюсь прочитать файл данных Excel, используя следующую функцию:
handleFiles = (f, evt) => {
var name = f.name;
const reader = new FileReader();
reader.onload = evt => {
/* Parse data */
const bstr = evt.target.result;
const wb = XLSX.read(bstr, { type: "binary" });
console.log("data>>>", wb);
/* Get first worksheet */
const wsname = wb.SheetNames[0];
const ws = wb.Sheets[wsname];
/* Convert array of arrays */
const data = XLSX.utils.sheet_to_csv(ws, { header: 1 });
/* Update state */
console.log("Data>>>", data);
};
reader.readAsBinaryString(evt.target.files[0]);
};
И функция вызывается с помощью вызова кнопки :
<Button onClick={this.handleFiles}>UPLOAD</Button>
При вызове функции ошибка отображается как «TypeError: не удается прочитать свойство ‘target’ неопределенного». Есть ли какие-либо решения для исправления этой ошибки?
Ответ №1:
ваш код
<Button onClick={this.handleFiles}>UPLOAD</Button>
Заменить на этот код
<Button onClick={(e)=>this.handleFiles(e)}>UPLOAD</Button>
Ответ №2:
Если вы явно не передали аргументы обработчику события, т.е. Использовали как
<Button onClick={this.handleFiles}>UPLOAD</Button>
,
первым аргументом, переданным обработчику события, handleFiles
является объект события.
Итак, в приведенном выше коде
handleFiles = (f, evt) => {...}
Фактическим объектом события является f
.
Поскольку вы явно не передали второй evt
аргумент обработчику события handleFiles
. Так оно и есть undefined
, и попытка получить доступ к свойству target
undefined
выдает ошибку.
Ошибка типа: не удается прочитать свойство ‘target’ неопределенного
Поэтому, чтобы решить эту проблему, вы можете явно передать аргументы.
<Button onClick={(evt) => this.handleFiles('someArgument', evt)}>UPLOAD</Button>