Вы никогда ничего не назначаете на state.search.result
Заменить:
const result = data.recipes;
с:
this.result = data.recipes;
Это сработает. Однако лучше спроектировать возвращаемые значения в качестве значений разрешения обещания:
getResults() { // drop the async; just return the promise
const API_KEY = "1d4e862be156056d16d3390378173c21";
return fetch(`https://www.food2fork.com/api/search?key=${API_KEY}&q=${this.query}`)
// ^^^^^^
.then(res => res.json())
.then(data => this.result = data.recipes);
// ^^^^^^^^^^^ (return it)
.catch(error => alert('Receive Data Failed'))
};
А в вашем основном коде:
state.search = new Search(query);
console.log(await state.search.getResults());