0
Ich versuche, globale Suche mit neuem Material Ui nächste Tabelle Komponente implementieren, ich habe HandleSearch-Methode, die Ereignis empfängt, und dann verwende ich regexp, um zu überprüfen, ob event.target.value der gleiche wie in Tabelle. Aber wenn ich die Zeichenfolge in der Suche lösche, werden die Spalten nicht aktualisiert. Es fängt an zu suchen nur ich beginne Typ. Wie durch Nummer nicht nur durch Zeichenfolge in diesem FallGlobale Tabelle Suche reagieren
const columns = [
{
dataKey: 'deviceType',
label:'Device Type',
numeric: false,
}, {
dataKey: 'deviceID',
label:'Device ID',
sortable: true,
numeric: true,
// cellRenderer: ({item, key}) =>
// <Button >Default</Button>,
}, {
........
}]
const data = [
{ key: 1, deviceType: 'Tag', deviceID: 1, name:'Tag For sending an ', location: 'Room_104', status: 'assigned'},
{ key: 2, deviceType: 'Tag', deviceID: 2, name:'Tag For sending an ', location: 'Room_104', status: 'assigned'},
{.......},
]
class EnhancedTable extends Component {
state = {
selected: [],
data,
order: {
direction: 'asc',
by: 'deviceID',
},
search: '',
}
handleSearch = event => {
debugger
const {data} = this.state
let filteredDatas = []
filteredDatas = data.filter(e => {
let mathedItems = Object.values(e)
let returnedItems
mathedItems.forEach(e => {
const regex = new RegExp(event.target.value, 'gi')
if (typeof e == 'string')
returnedItems = e.match(regex)
})
return returnedItems
})
this.setState({data: filteredDatas, search: event.target.value})
}
render =() => {
const {data, search} = this.state
return (
<Paper>
<Table
data={data}
search={search}
onSearch={this.handleSearch}
/>
</Paper>)
}
}
export default EnhancedTable
Von suchen, was ich verstehe Sie Nummern suchen wollen. Sie können eine Zahl in JavaScript in eine Zeichenfolge konvertieren. –
Ich bin ein bisschen verwirrt, wenn Sie sagen, dass Sie erwarten, dass es jedes Mal sucht, wenn Sie ein Zeichen löschen, oder wenn Sie möchten, dass es die Tabelle aktualisiert, nachdem Sie alle Zeichen im Suchfeld gelöscht haben? Im letzteren Fall scheint es, als müssten Sie nur Ihre Regex aktualisieren, um nach einer leeren Zeichenfolge zu suchen. Wenn das Suchfeld leer ist, geben Sie alle Elemente zurück. – CaseyC