首页 > 解决方案 > React - 绑定数据时显示消息

问题描述

我有一个用户列表,如果绑定数据延迟,我想在其中显示“正在加载用户..”,如果结果为空,则显示“未找到数据”。我怎样才能做到这一点。

包括用户组件,我将在其中显示用户详细信息

render() {
    const { mapSP, classes } = this.props;
    const { search, statusFilter, page, rowsPerPage } = this.state;

    let filteredList = mapSP && mapSP.filter(usr => {
      const normalizedSearchString = search.toLowerCase();
      return ((usr.sp_Name.toLowerCase().includes(normalizedSearchString)
        || usr.sp_Phone.includes(normalizedSearchString)
        || usr.sp_Role.toLowerCase().includes(normalizedSearchString))
        && usr.sp_Status == statusFilter && usr.sp_ActiveFlag == "1")
    });
    //console.log(filteredList)
    let items = 1;
    return (
      <div>

         <div className={classes.tableResponsive}>
          <Table className={classes.table}>
            <TableHead className={classes["warning" + "TableHeader"]}>
              <TableRow >
                <TableCell className={classes.tableCell + " " + classes.tableHeadCell}>#</TableCell>
                <TableCell className={classes.tableCell + " " + classes.tableHeadCell}>Name</TableCell>
                <TableCell className={classes.tableCell + " " + classes.tableHeadCell}>Phone</TableCell>
                <TableCell className={classes.tableCell + " " + classes.tableHeadCell}>Role</TableCell>
                <TableCell className={classes.tableCell + " " + classes.tableHeadCell}>Service</TableCell>
                <TableCell className={classes.tableCell + " " + classes.tableHeadCell}>Location</TableCell>
              </TableRow>
            </TableHead>
            <TableBody>
              {filteredList && filteredList
                .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
                .map(row => (
                  //  { mapSP && mapSP.map(row => (
                  <TableRow key={row.id}>
                    <TableCell className={classes.tableCell}>{items++}</TableCell>

                    <TableCell className={classes.tableCell}>
                      {row.sp_Name}
                    </TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Phone}</TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Role}</TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Service}</TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Location}</TableCell>                   

                  </TableRow>
                ))}
 </TableBody>
          </Table>

标签: reactjs

解决方案


在您的 render() 函数中,您可以执行以下操作:

render(){
    if(!filteredList){
      return(
         <div>Loading...</div>
      )
    } else {
       return(
           {filteredList
                .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
                .map(row => (
                  //  { mapSP && mapSP.map(row => (
                  <TableRow key={row.id}>
                    <TableCell className={classes.tableCell}>{items++}</TableCell>

                    <TableCell className={classes.tableCell}>
                      {row.sp_Name}
                    </TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Phone}</TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Role}</TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Service}</TableCell>
                    <TableCell className={classes.tableCell}>{row.sp_Location</TableCell>                   
                  </TableRow>
           ))}       
       )

    }

}

只要确保您在 render() 某处定义了过滤列表 :)


推荐阅读