【发布时间】:2021-09-30 07:15:25
【问题描述】:
感谢大家尝试回答我之前的问题。我刚刚学会了如何在我的数组对象中改变布尔值。
现在我需要触发重新渲染,因为我的对象发生了变化,但对生命周期了解不多。我是新手,所以有点手将是完美的。谢谢各位。
export default function App() {
const [obj, setObj] = useState([
{ name: "chicken", comments: "nice", photo: img, boolean: false },
{ name: "beef", comments: "ehh", photo: img, boolean: false },
{ name: "turkey", comments: "not bad", photo: img, boolean: false },
{ name: "broccoli", comments: "cool", photo: img, boolean: false },
{ name: "carrot", comments: "disgusting",photo: img, boolean: false }
]);
const handleClick = (e) => {
const idx = e.target.value;
setObj(prev => {
prev[idx].boolean = !prev[idx].boolean
return prev
});
window.alert(JSON.stringify(obj));
}
return (
<div>
{obj.map((map, key) => (
<div>
<img src={map.photo} alt={map.key} />
<h1>{map.name}</h1>
<p>{`${map.boolean}`}</p>
<p>{key}</p>
<button value={key} onClick={handleClick}>
show comments
</button>
</div>
))}
</div>
);
}
【问题讨论】:
-
我已经更新了答案