我试图编写一个组件,当单击查找按钮时列出一组结果。然而,当我单击查找按钮时,当我调用setResults([])
时,results
状态变量没有被重置。
它也不返回结果数组中的每个结果,只返回最新的一个。我是否也错误地调用了results.map
或result.resultItems.map
?
这是我点击查找按钮三次后的样子:
的数据
我需要它看起来像这样,即使再次单击“查找”按钮:
的
const SearchContact = () => {
const [results, setResults] = useState([]);
const handleFind = () => {
setResults([]);
const response = [
{ name: "Tim", email: "[email protected]" },
{ name: "Fred", email: "[email protected]" }
];
for (var i = 0; i < response.length; i++) {
const resultItems = [];
resultItems.push(<div>{response[i].name}</div>);
resultItems.push(<div>{response[i].email}</div>);
setResults([...results, { resultItems: resultItems }]);
}
}
return (
<Button onClick={handleFind}>Find</Button>
{results.map((result, index) => {
return (
<div key={index}>
{result.resultItems.map((resultItem, index) => {
return <div key={index}>{resultItem}</div>;
})}
</div>
);
})}
)
}
字符串
2条答案
按热度按时间ubbxdtey1#
试试tihs:
字符串
1hdlvixo2#
只需在XNUMX Find函数中调用
setResults(results)
,无需调用setResults([])
或任何循环逻辑,如下所示:字符串
而在JSX中:
型