【问题标题】:How to display an appropriate response on <MaterialTable> when the search returns no results?当搜索没有返回结果时,如何在 <MaterialTable> 上显示适当的响应?
【发布时间】:2020-07-11 20:16:09
【问题描述】:

我在 React 中使用来自https://material-table.com/ 的表格 但我正在承诺进行数据搜索。如果搜索未返回任何结果,则该表将永远加载...我的想法是显示一些消息。我怎样才能以最佳方式做到这一点?

 <MaterialTable
    title="Documents"
    columns={cols}
    data={query =>
    new Promise((resolve, reject) => {
        let url = global.url_base+'service'
        fetch(url, {
            method: 'POST',
            body: JSON.stringify({
                        search: query.search,
                        pageSize: query.pageSize,
                        page: (query.page + 1),
                        id: sessionStorage.getItem('id')
            }),
            headers: {
                    "Content-type": "application/json; charset=UTF-8"
            }
            })
        .then(response => response.json())
        .then(result => {
            resolve({
            data: result.data,
            page: result.page - 1,
            totalCount: result.total,
            })
        })
    })
    }
/>

【问题讨论】:

    标签: reactjs material-table


    【解决方案1】:

    您应该在其他地方获取数据,例如。在 componentDidMount() 中,您将其设置为状态变量。然后,在您的 MaterialTable 中输入 data={(this.state.response) ? response : 'Your error message'},或者,如果此表不使用字符串作为数据,则只需切换渲染整个 MaterialTable 和您的错误消息。

    【讨论】:

    • 它对我不起作用,因为我找不到包含搜索的变量。例如:componentDidMount() { console.log(this.tableRef.current.state.searchText);在这种情况下 this.tableRef.current.state.searchText 永远不会更新。
    • 我不熟悉 MaterialTable,但我发现了这个:onSearchChange,所以我猜你可以使用onSearchChange=this.setState({myQuery: query.search})。关于获取查询 - 看这里:github.com/mbrn/material-table/issues/857 这或多或少是我的想法:获取表外的数据并根据响应有条件地呈现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多