【发布时间】:2020-12-02 22:13:25
【问题描述】:
我有一个从 API 获取的曲目列表 我实现了负责查找相应曲目的搜索栏 但问题是,当我在搜索栏中输入任何内容时,会出现另一个曲目列表,并且它的过滤方式与我想过滤具有曲目和艺术家名称的已存在曲目列表的方式相同。 我想我需要在地图方法中使用地图。
const TrackList = ({trackList}) => {
const [searchTerm, setSerchTerm] = useState('')
const [searchRes, setSearchRes] = useState([])
const settingSearch = (e) => {
e.preventDefault()
setSerchTerm(e.target.value)
}
useEffect(() => {
const res = trackList.map(i=> {
return i.name
})
const filteredRes = res.filter(item => item.toLowerCase().includes(searchTerm))
setSearchRes(filteredRes)
}, [searchTerm])
return (
<div>
<Container>
<h1 className='mb-5 mt-5'>Top TrackList</h1>
<FormControl type="text"
placeholder="Search"
className="mr-sm-2"
value={searchTerm}
onChange={settingSearch}
/>
<ul>
{ searchRes.map(i => (
<li>{i}</li>
)) }
</ul>
{trackList.map(item => {
return (
<Row className='mt-1' style={{padding: '5px', border: '1px solid #000', display: 'flex', justifyContent: 'flex-start', alignItems: 'center'}}>
<Col lg={1} md={1} sm={1}>
<a href={item.artist.url}><img src={item.image[1]['#text']} /></a>
</Col>
<Col lg={11} md={11} sm={11}>
<Link to={`/artist/${item.artist.name}`}><h6>{item.artist.name}</h6></Link>
<p>"{item.name}"</p>
</Col>
</Row>
)
})}
</Container>
</div>
)
}
【问题讨论】:
标签: javascript reactjs ecmascript-6 react-hooks