Я пытаюсь отобразить список результатов, полученных из ответа API википедии. Если ответ не отображает список, он должен показывать другое сообщение. Я пытаюсь сделать условный рендеринг.
Вот код:
getData(e) {
e.preventDefault();
var search = e.target.search.value;
var wikipediaEndPoint = "https://en.wikipedia.org/w/api.php?format=json&origin=*&action=query&generator=search&gsrnamespace=0&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch="+search;
var wikipediaUrl = "https://en.wikipedia.org/?curid=";
fetch(wikipediaEndPoint)
.then(data => {
return data.json();
}).then(data => {
var objectList = (data.hasOwnProperty("query")) ? data.query.pages : "";
let resultList;
if(objectList !== ""){
resultList = Object.keys(objectList).map(function(key, index) {
return (
<div className="item" key={objectList[key].pageid}>
<a href={wikipediaUrl+objectList[key].pageid}>
<h1>{objectList[key].title}</h1>
<p>{objectList[key].extract}</p>
</a>
</div>
)
});
} else {
resultList = (function() {
return (
<div className="item" key={1}>
<p>No results!</p>
</div>
)
});
}
this.setState({search: resultList});
})
}
Результат показан здесь: <div className="items">{this.state.search}</div>
Он отлично работает, когда ключевое слово поля поиска находит некоторые результаты, однако в противном случае консоль возвращает ошибку (или предупреждение):
Warning: Functions are not valid as a React child. This may happen if
Warning: Functions are not valid as a React child. This may happen if
you return a Component instead of <Component/> from render. Or maybe
you return a Component instead of <Component/> from render. Or maybe
you meant to call this function rather than return it.
Где ошибка? Правильно ли я выполняю условное рендеринг?
Спасибо