reactjs - 从输入中搜索时过滤掉行数据
问题描述
我尝试过滤掉显示在 UI 中的行数据,当 name 或 lname 与搜索条件(即搜索)匹配时,我无法过滤掉行数据
解决方案
我只是重构了一些我删除它的东西:
const filterData = () => {
if (search === "") {
return items;
}
};
然后我将项目更新为函数,如果搜索被定义为道具,你会过滤吗
import React from "react";
export const CustTable = ({ columns, data, setData, search, setSearch }) => {
const [editable, setEditable] = React.useState("");
const cellEditable = (label) => {
data.map((l) => {
if (l.name === label.name) {
setEditable(label.name);
}
});
};
const changeLastName = (name, e, index) => {
e.persist();
setData((prevData) => {
return [
...prevData.slice(0, index),
{ name, lname: e.target.value },
...prevData.slice(index + 1)
];
});
};
const items = () => {
let resultItems = data;
if (search) {
resultItems = data.filter((item) =>
item.name.toLowerCase().includes(search.toLowerCase())
);
}
return resultItems.map((label, index) => {
return (
<tr style={{ display: "flex" }} key={index}>
<span style={{ width: "35%" }}>{label.name} </span>
{editable === label.name ? (
<input
type="text"
value={label.lname}
onChange={(e) => changeLastName(label.name, e, index)}
/>
) : (
<span onClick={() => cellEditable(label)}>{label.lname} </span>
)}
</tr>
);
});
};
const searchData = (e) => {
setSearch(e.target.value);
};
return (
<>
<div>
<input
type="search"
placeholder="search"
onChange={(e) => searchData(e)}
/>
</div>
{items()}
</>
);
};
推荐阅读
- informatica - 我们如何将数据转储到 informatica?
- r - 当父目录的 URL 给出 404 时从网站下载文件
- flutter - 使用切换按钮时显示微调器
- azure-devops - 在 azure 管道变量中设置任务结果
- python - 通过用户模型 Django 访问配置文件信息
- math - 检查一个数字是否可以表示为 x 的 2 次方之和?
- tensorflow - 如何从 Huggingface TensorFlow 后端的检查点加载经过训练的 TensorFlow 模型?
- javascript - visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件
- html - React Native Web 与 Electron 抛出错误
- python - 关于从用户获取文件名的输出问题