0
私は次のテーブルコンポーネントで新しいマテリアルを使ってグローバル検索を実装しようとしています。handleSearchメソッドがあり、イベントを受け取っていますし、regexpを使ってevent.target.valueもテーブルと同じかどうかを確認します。しかし、検索する文字列を削除すると、列は更新されません。それは私がタイプを開始するだけの検索を開始します。どのように私はあなたが番号を検索しようとしている理解何より、この場合グローバルテーブルの検索
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
だけではなく、文字列で番号で検索します。数字を文字列に変換することができます。 –
文字を削除するたびに検索したり、検索フィールドのすべての文字を削除した後にテーブルを更新したいと思っているとしたら、ちょっと混乱しますか?後者の場合は、空の文字列をチェックする正規表現を更新するだけで、検索フィールドが空の場合はすべての項目を返す必要があるようです。 – CaseyC