我正在使用材料表和 React 使用远程数据。在没有找到搜索结果的情况下,我试图弄清楚如何删除微调器的显示并显示“没有要显示的记录”。搜索在搜索字段中的每次击键后执行 Web 服务调用。我想我想要的是设置一个 timeOut 来停止微调器,但我确定在下面的代码中添加它的位置并且在语法上有点困惑。
render() {
return (
<MaterialTable
icons={tableIcons}
title="Remote Data Preview"
columns={[
{ title: 'Publication ID', field: 'publicationId' },
{ title: 'PMID', field: 'pmid' },
{ title: 'First author', field: 'firstAuthor' },
{ title: 'Publication', field: 'title' },
{ title: 'Journal', field: 'journal' },
{ title: 'Status', field: 'status' },
]}
data={query =>
new Promise((resolve, reject) => {
let url = GET_PUBLICATIONS_URL
if (query.search) {
url += query.search + '?pmid=true'
fetch(url)
.then(response => response.json())
.then(result => {
resolve({
data: [result],
page: 0,
totalCount: 1,
})
}).catch(error => {
})
}
else {
console.log("** No PMID added...")
url += '?size=' + query.pageSize
url += '&page=' + (query.page)
fetch(url)
.then(response => response.json())
.then(result => {
resolve({
data: result._embedded.publications,
page: result.page.number,
totalCount: result.page.totalElements,
})
console.log("** Data: ", result._embedded.publications);
}).catch(error => {
setTimeout(resolve, 1000)
return Promise.reject(error);
})
}
})
}
options={{
search: true
}}
/>
)
}
当使用上述代码没有返回搜索结果时,控制台显示:
未捕获(承诺中) SyntaxError:JSON 中位于位置 0 material-table.js:249 的意外标记 U 未捕获(承诺中)类型错误:无法读取未定义的属性“totalCount”