Я создал компонент класса с конструктором для извлечения данных.

Я хочу поместить данные в массив свойств класса и отобразить данные в раскрывающемся списке.

Я не храню данные как состояние, так как список элементов не изменится. Но строка this.myArray = Object.entries = (obj); , генерирует

Ошибка типа: ошибка не определена.

Как я могу поместить данные, возвращенные в свойство класса?

 class FilterDropdown extends Component { constructor(props){ super(props) this.getFormatItems = this.getFormatItems.bind(this) this.myArray = [] this.getFormatItems() } getFormatItems() { var opts = { method: 'GET', headers: {} }; fetch('http://example-site.com/api/formats', opts).then(function (response) { return response.json(); }) .then(function (obj) { // TypeError: this is undefined this.myArray = Object.entries = (obj); }); } 

используйте функцию стрелки вместо традиционного объявления, и она автоматически свяжет функцию с контекстом класса, как показано ниже

 class FilterDropdown extends Component { constructor = (props) ={amp}gt; { super(props) this.getFormatItems = this.getFormatItems.bind(this) this.myArray = [] this.getFormatItems() } getFormatItems = () ={amp}gt; { var opts = { method: 'GET', headers: {} }; fetch('http://example-site.com/api/formats', opts).then(function (response) { return response.json(); }) .then(function (obj) { // TypeError: this is undefined this.myArray = Object.entries = (obj); }); } 

Я думаю, что проблема заключается в функции обратного вызова. Используйте функцию стрелки или используйте некоторую ранее связанную функцию (например, getFormatItems ).

 var opts = { method: 'GET', headers: {} }; fetch('http://example-site.com/api/formats', opts).then((response) ={amp}gt; { return response.json(); }) .then((obj) ={amp}gt; { // TypeError: this is undefined this.myArray = Object.entries = (obj); }); 
boikevich

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,