Я попытался реализовать функцию поиска/фильтрации в приложении reactjs. Пользователь может искать что угодно, и объект должен возвращаться в зависимости от значения поиска. Логика поиска реализована в handleChange
. Может ли кто-нибудь дать мне знать, где я сделал ошибку?
Он не возвращает никаких ошибок. Просто погас экран
Доставка.tsx
export class Shipment extends Component<object, ListInterface> {
constructor(props: any) {
super(props);
this.state = {
list: [] as any[],
value: ''
};
this.handleChange = this.handleChange.bind(this);
}
componentDidMount() {
this.getShipmentList();
}
componentWillReceiveProps(nextProps: any) {
this.setState({
list: nextProps.list
});
}
getShipmentList() {
axios.get('http://localhost:3001/shipments').then((res: any) => {
this.setState({ list: res.data });
});
}
handleChange(e: any) {
let currentList = [];
let newList = [];
if (e.target.value !== '') {
currentList = this.state.list;
newList = currentList.filter((item: any) => {
const lc = item.toString().toLowerCase();
const filter = e.target.value.toString().toLowerCase();
return lc.includes(filter);
});
} else {
newList = this.state.list;
}
this.setState({
list: newList
});
}
render() {
return (
<div>
<Card className="Card">
<CardContent className="Card-Content">
<Grid container spacing={3}>
<Grid item xs={12}>
<div className={`Card-Content__SearchBar`}>{statusList}</div>
<div className="Card-Content__Location">
<TextField
id="outlined-name"
label="Search"
margin="normal"
variant="outlined"
fullWidth={true}
onChange={this.handleChange}
/>
</div>
</Grid>
</Grid>
</CardContent>
</Card>
{this.state.list.map((item: any, index: number) => (
<ShipmentList key={index} value={item} />
))}
</div>
);
}
}
export default Shipment;
db.json
{
"id": "S1002",
"name": "PO89634, PO27X",
"cargo": [
{
"type": "Bikes model 27X",
"description": "100 Bikes model 27X",
"volume": "100"
}
],
"mode": "air",
"type": "LCL",
"destination": "Saarbrücker Str. 38, 10405 Berlin",
"origin": "Shanghai Port",
"services": [
{
"type": "customs"
}
],
"total": "10000",
"status": "COMPLETED",
"userId": "U1001"
},
ShipmentList
. Ничего не показывать на экране и вообще никаких ошибок. - person SKL   schedule 14.08.2019filteredList
в вашем состоянии и оставитьlist
нетронутым - person Antoine Grandchamp   schedule 14.08.2019filteredList
наShipmentList
? - person SKL   schedule 14.08.2019