Я пробовал много разных решений, но пока ни одно из них не помогло. Я хочу фильтровать данные, которые я получаю от API, в поле ввода. Я поместил данные в список, который называю peopleList
, и это список, который я хочу фильтровать.
Вот данные из Api: https://gyazo.com/5925e386728519d28046518c583facde
и код:
import React from 'react'
import axios from 'axios'
class List extends React.Component {
constructor(props) {
super(props)
this.state = {
peopleList: [], // here the empty list
search: '',
}
}
componentDidMount() {
this.peopleListFromApi()
}
peopleListFromApi() {
const baseUrl = 'https://swapi.dev/api/'
axios.get(baseUrl + 'people').then((response) => {
let peopleList = response.data.results.map((person, i) => {
return (
<main key={i}>
<ul key={i}>
{
<li key={i}>
{'(' +
person.gender +
') ' +
person.name +
' is ' +
person.height +
' cm tall, got ' +
person.eye_color +
' eyes and is born ' +
person.birth_year}
</li>
}
</ul>
</main>
)
})
this.setState({ peopleList: peopleList }) // here i update it with the data from api
})
}
onchange = (event) => {
this.setState({ search: event.target.value })
}
render() {
return (
<main>
<ul>
{this.state.peopleList} {/* write it out on screen */}
</ul>
<input
className="search"
placeholder="Search the universe..."
type="text"
value={this.state.search}
onChange={this.onchange}
></input>
</main>
)
}
}
export default List