react-hooks - 如何在反应钩子中显示无效搜索的错误消息?
问题描述
以下代码是从 mongoDB 中检索公司详细信息并以表格格式显示。另外,我放置了一个搜索栏,可以使用公司名称搜索公司,我使用了 react hooks 来实现这个功能。我想知道如何为无效搜索显示错误消息,而不是在进行无效搜索时显示空表。
import React, {useEffect, useState} from "react";
import GridWrapper from "../helpers/gridWrapper";
import ContentWrapper from "../helpers/contentWrapper";
import Popup from "./contacts/popupTemplate";
import EditIcon from '@material-ui/icons/Edit';
import DeleteIcon from '@material-ui/icons/Delete';
import ViewIcon from "@material-ui/icons/EditOutlined";
import "./stylesheets/contacts.css"
import { useDispatch } from "react-redux";
import { useSelector } from "react-redux";
import { getCompanies } from "../redux/actions/companyAction";
const Contacts = () => {
const dispatch = useDispatch();
useEffect(() => {
dispatch(getCompanies());
},[dispatch]);
const { companies } = useSelector(state => state.companies);
//for popup management
const [buttonPopup, openPopup] = useState(false);
let count = 1;
const[search, setSearch] = useState("");
const filteredCompanies = companies.filter(company=>{
return company.companyName.toLowerCase().includes(search.toLowerCase())
})
return (
<GridWrapper>
<ContentWrapper>
<div>
<input
type="text"
placeholder="Search Contacts"
class="boxContainer"
onChange={e => setSearch(e.target.value)}>
</input>
</div>
<Popup trigger={buttonPopup} setTrigger={openPopup}>
<div className="row">
<div className="column1">
<h4>
Details of Client
</h4>
<div className="column1-part1">
<div className="column1-part1-column">
Id : 10235
<br></br>
Name : John Smith
<br></br>
Company Name : Company ABC
</div>
<div className="column1-part1-column2">
Contact Number : 0774410398
<br></br>
Company Telephone : 0112937148
<br></br>
Email : example@gmail.com
</div>
</div>
<div className="column1-part2">
Client Job : Sales Head
<br></br>
Client NIC : 1958426712V
<br></br>
Client Address : No 15, First lane, Colombo
<br></br>
Client DOB : 25th June 2021
<br></br>
Client Gender : Male
</div>
<div className="column1-part3">
Company Address : No 15, First lane, Colombo
<br></br>
Company Registration Number : 256364125895
</div>
</div>
<div className="column2">
<button className="ClientEditBtn">
<EditIcon></EditIcon>
</button>
<button className="ClientDeleteBtn">
<DeleteIcon></DeleteIcon>
</button>
<h5>
Current Projects
</h5>
<p>
Project 1 - 25/06/2021
<br></br>
Project 256 - 27/06/2022
<br></br>
Project 256 - 27/06/2022
<br></br>
Project 256 - 27/06/2022
</p>
</div>
</div>
</Popup>
<div class="table-box">
<table>
<thead>
<tr>
<th>No.</th>
<th>Registration No.</th>
<th>Company Name</th>
<th>Company Address</th>
<th></th>
</tr>
</thead>
<tbody>
{filteredCompanies.map(company =>(
<tr>
<td>{count++}</td>
<td>{company.companyRegNumber}</td>
<td>{company.companyName}</td>
<td>{company.companyAddress}</td>
<td><button onClick={() => openPopup(true)} class="btn-view"><ViewIcon/>View</button></td>
</tr>
))}
</tbody>
</table>
</div>
</ContentWrapper>
</GridWrapper>
);
};
export default Contacts;
解决方案
如果您从 jsx 中获取此代码段:
<tbody>
{filteredCompanies.map(company =>(
<tr>
<td>{count++}</td>
<td>{company.companyRegNumber}</td>
<td>{company.companyName}</td>
<td>{company.companyAddress}</td>
<td><button onClick={() => openPopup(true)} class="btn-view"><ViewIcon/>View</button></td>
</tr>
))}
</tbody>
你可以改变它,像这样:
{filteredCompanies?.length >0?
<tbody>
{filteredCompanies.map(company =>(
<tr>
<td>{count++}</td>
<td>{company.companyRegNumber}</td>
<td>{company.companyName}</td>
<td>{company.companyAddress}</td>
<td><button onClick={() => openPopup(true)} class="btn-view"><ViewIcon/>View</button></td>
</tr>
))}
</tbody>
: <div> <i>No companies found.</i> </div>}
tbody
如果过滤的公司不为空,则内联条件将呈现您的 ,或显示"No companies found"
消息。
推荐阅读
- python - 测试 TensorFlow 安装是否在 Ubuntu 20.04 中的 Python 3.8.2 上失败
- javascript - 检查字符串是否包含数组中忽略大小写的元素(JavaScript)
- karate - 通过空手道功能文件中的标记调用另一个场景无法重新识别 karate-config.js 函数
- linux - 在没有 yum 的情况下在哪里手动下载 .rpm?
- c++ - sizeof(variableName or expression) 和 sizeof(decltype(variableName or expression)) 一样吗?
- html - 悬停时的CSS动画文本颜色不起作用
- javascript - React - 使用 Jest 进行测试 - TypeError:无法读取未定义的属性“销毁”
- javascript - 在 Reactjs 中更改行悬停图像
- javascript - 在使用数据之前等待反应状态/道具更新?
- javascript - 如何在 React 中获取子源代码?