reactjs - 从 MUIDataTable 自定义搜索中的对象搜索
问题描述
我有一些列,其中行是customBodyRender
我的MUIDataTable
,所以它不是字符串类型。因此,我为我的表创建了一个自定义搜索。但是在下面的示例中,当我过滤 a 时,它不会搜索(返回行)unitName
。
例如,搜索103
应该返回第二行,因为它是单位名称,但它不会返回任何内容。
https://codesandbox.io/s/async-glitter-8t1i5?file=/src/App.js:0-2109
沙盒链接来玩弄代码。
import React, { useState, useEffect } from "react";
import MUIDataTable from "mui-datatables";
import MatButton from "@material-ui/core/Button";
const Test = () => {
const [data, setData] = useState([]);
useEffect(() => {
const arr = [
{ id: 1, unitName: "101", name: "ABC Test", email: "abc@test.com" },
{ id: 2, unitName: "103", name: "Gabriel", email: "gab@test.com" },
{ id: 3, unitName: "104", name: "Mary", email: "mary@gmail.com" },
{ id: 4, unitName: "302", name: "Robert", email: "" }
];
let arrData = [];
for (const a of arr) {
arrData.push({
unit: a,
name: a.name,
email: a.email
});
}
setData(arrData);
}, []);
const columns = [
{
name: "unit",
label: "Unit",
options: {
customBodyRender: (value) => {
return (
<MatButton
color="primary"
onClick={() => {
alert(value.id);
}}
>
{value.unitName}
</MatButton>
);
}
}
},
{ name: "name", label: "Name" },
{
name: "email",
label: "Email",
options: {
customBodyRender: (value) => {
return <a href={`mailto:+${value}`}>{value}</a>;
}
}
}
];
const options = {
filterType: "dropdown",
pagination: false,
selectableRows: "none",
customSearch: (searchQuery, currentRow, columns) => {
currentRow.map((element) => {
if (element === null) return false;
if (typeof element === "object") {
if (element.unitName.toString().trim().includes(searchQuery))
return true;
if (element.email.toString().includes(searchQuery)) return true;
} else {
if (element.toString().includes(searchQuery)) return true;
}
return false;
});
}
};
return (
<div>
<MUIDataTable
title={"Test"}
data={data}
columns={columns}
options={options}
/>
</div>
);
};
export default Test;
谢谢
解决方案
推荐阅读
- swiftui - SwiftUI:如何将字符串数组解析为文本
- python - 没有从python中的数据库获取数据
- python - Python:串行、线程、多处理。哪种方式最快?
- python - 如何修复我应该在不和谐服务器中发送垃圾邮件的命令
- swift - 比较字典键中的特定值
- javascript - 图形 API 不返回会议 ID
- mysql - 如何在mysql中创建存储过程?
- javascript - 在 javascript 中使用 jQuery.getJSON() 方法时的本地路径引用
- chart.js - Chartjs 使用大数据和固定标签创建图表
- javascript - 如何在 Javascript 中实现三元赋值?