【发布时间】:2021-07-27 07:49:36
【问题描述】:
我正在尝试通过 RandomUser api 进行过滤以显示男性或女性。我当前的问题是我无法像显示原始数据那样显示过滤后的数据。
这是我当前的代码:
const [data, setData] = useState('');
const [gender, setGender] = useState('');
useEffect(() => {
fetch(`https://randomuser.me/api/?results=500`)
.then(response => response.json())
.then(setData);
}, [])
const FilterData = () => {
if(gender) {
var searchedResult
searchedResult = data.results.filter(
(e) => e.gender === gender
);
console.log(searchedResult)
console.log(gender)
setData([searchedResult])
}
}
if(data.results){
return (
<div>
<div>
<select name="Gender" onChange={(e) => setGender(e.target.value)}>
<option value="male">Male</option>
<option value="female">Female</option>
</select>
<button onChange={FilterData()}></button>
</div>
<ul>
{data.results.map(results => (
<li key={results}>
<p>{results.name.first} {results.name.last}</p>
<img src={results.picture.medium}></img>
</li>
))}
</ul>
</div>
)
}
else{
return(
<div>loading...</div>
)
}
}
我认为我的问题适用于我最初如何使用 if/else 语句设置我的 html,导致 html 不断显示“正在加载...”,如果我没有 data.results 但我不太确定我如何将其应用于我的新过滤数组
【问题讨论】:
标签: javascript arrays reactjs filter