我找不到更好的方式来描述我所遇到的问题,如果这个问题经常被问到,我很抱歉。
代码是这样的:
const [isFlipped, setFlipped] = useState(false);
const flip = () => {
if (!isFlipped) {
setFlipped(true);
} else {
setFlipped(false);
}
};
return(
data.map((product) => (
<div
onClick={()=> flip()}
animate={isFlipped && { rotateY: 180 }}
>
<p>{product.name}</p>
<p>{product.info}</p>
</div>
));
)
我希望flip()
函数只在被点击的div上工作,但是目前它影响每个映射的div。
Edit(在看到flip函数之后):你应该让它成为一个单独的组件,这样每个子组件都有自己的isFlipped State。然后用产品作为道具来映射和创建组件。
为映射中的div添加一个键以增加唯一性。
data.map((product, key) => (
<div key={key} onClick={()=> flip()}>
<p>{product.name}</p>
<p>{product.info}</p>
</div>
));