Ошибка типа: не удается прочитать свойство ‘target’ неопределенного

#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>