【发布时间】:2021-06-16 18:31:58
【问题描述】:
我正在寻找一种轻松过滤并可能对下表进行排序的方法。我尝试用
过滤它 {data.getInteressentListing.edges.filter(node.name => node.name.includes('J')).map(({node}) => (
但这没有用。我也需要像搜索栏这样的东西,不仅过滤名称。它应该同时过滤所有列。也许你可以给我一些建议或一个简单的解决方案。
提前致谢
丹尼尔
这是我的工作简单表的代码
import React from 'react';
import gql from 'graphql-tag';
import { Query } from 'react-apollo';
import Table from 'react-bootstrap/Table'
export const GET_POSTS = gql`
query {
getInteressentListing {
edges {
node {
id
Name
Vorname
Quelle
Artikel
Land
Ort
Tel
Mobil
EMail
URL
Whatsapp
Telegram
Notizen
Geschlecht
}
}
}
}
`;
const rowStyles = (post, canEdit) => canEdit(post)
? { cursor: 'pointer', }
: {};
const PostViewer = ({ canEdit, onEdit }) => (
<Query query={GET_POSTS}>
{({ loading, data }) => !loading && (
<Table >
<thead>
<tr>
<th>Name</th>
<th>Vorname</th>
<th>Land</th>
<th>Ort</th>
<th>Tel.</th>
<th>Mobil</th>
<th>E-Mail</th>
<th>Geschlecht</th>
</tr>
</thead>
<tbody>
{data.getInteressentListing.edges.map(({node}) => (
<tr
key={node.id}
style={rowStyles(node, canEdit)}
onClick={() => canEdit(node) && onEdit(node)}
>
<td> {node.Name} </td>
<td> {node.Vorname} </td>
<td> {node.Land} </td>
<td> {node.Ort} </td>
<td> {node.Tel} </td>
<td> {node.Mobil} </td>
<td> {node.EMail} </td>
<td> {node.Geschlecht} </td>
</tr>
))}
</tbody>
</Table>
)}
</Query>
);
PostViewer.defaultProps = {
canEdit: () => true,
onEdit: () => null,
};
export default PostViewer;
这是我取回数据时的格式。它里面有节点:
{
"data": {
"getInteressentListing": {
"edges": [
{
"node": {
"id": "1294",
"Name": "Felix",
"Vorname": "Hase",
"Quelle": "Facebook",
"Artikel": "Briefe",
"Land": "Deutschland",
"Ort": "KiKaLand",
"Tel": "+49 0256/659552",
"Mobil": "01525659565",
"EMail": "felix@kika.de",
"URL": "www.felixderhase.de",
"Whatsapp": true,
"Telegram": false,
"Notizen": "Läuft im Fernsehen",
"Geschlecht": "Divers"
}
},
{
"node": {
"id": "1295",
"Name": "Daniel",
"Vorname": "Morgner",
"Quelle": "eBay-Kleinanzeigen",
"Artikel": "Omega",
"Land": "Deutschland",
"Ort": "Musterort",
"Tel": "045692582",
"Mobil": "015412,0",
"EMail": "asdasd@web.de",
"URL": "www.daniel.de",
"Whatsapp": false,
"Telegram": true,
"Notizen": "asdasd",
"Geschlecht": "Männlich"
}
},
{
"node": {
"id": "1296",
"Name": "Muster",
"Vorname": "Max",
"Quelle": "eBay-Kleinanzeigen",
"Artikel": "Musterartikel",
"Land": "Musterland",
"Ort": "Musterort",
"Tel": "+49255225488",
"Mobil": "+49536256",
"EMail": "Max@mustermann.de",
"URL": "www.mustermann.org",
"Whatsapp": true,
"Telegram": null,
"Notizen": "Hat viele Muster",
"Geschlecht": "Männlich"
}
},
{
"node": {
"id": "1297",
"Name": "",
"Vorname": "Peter",
"Quelle": null,
"Artikel": "Steine",
"Land": "Deutschland",
"Ort": "Musterort",
"Tel": "07228562345",
"Mobil": "01525654654654",
"EMail": "peter-pan@web.de",
"URL": "peter-walter.de",
"Whatsapp": null,
"Telegram": null,
"Notizen": "Verkauft Steine",
"Geschlecht": "Männlich"
}
},
{
"node": {
"id": "1298",
"Name": "Jakob",
"Vorname": "Hund",
"Quelle": null,
"Artikel": "Hundefutter",
"Land": "Traumland",
"Ort": "Bagdad",
"Tel": "0152519188723",
"Mobil": "025105153",
"EMail": "jakob@web.de",
"URL": null,
"Whatsapp": null,
"Telegram": true,
"Notizen": "Ist ein Hund",
"Geschlecht": "Männlich"
}
}
]
}
}
}
我在查询中请求数据,请参阅上面的代码
【问题讨论】:
-
你可以试试类似的方法。您可以查看下面的演示。我对 VueJS 做过,你可以对 ReactJS 采用相同的方法。 stackoverflow.com/questions/66685931/…
-
谢谢。我试过了,但我不知道如何让它正常工作。你的代码看起来和我一样简单,但我不知道如何让它工作。
-
我使用纯 React 应用程序创建了带有您提到的关键属性的模拟数据并添加了过滤器。希望它会帮助你。我也添加了演示链接。
标签: javascript arrays reactjs filter react-bootstrap