【发布时间】:2021-08-14 13:46:55
【问题描述】:
我已经映射了一个对象数组,如果我单击其中一个元素,我想将该元素的颜色更改为红色(通过添加一个 CSS 类),但它总是将所有元素着色为红色。我以为 React 会自动获取上下文?我还需要使用“this”吗?
import React, { useState } from "react";
import './Map.css';
const Arr = [
{
id: "i1",
item: "item-1",
},
{
id: "i2",
item: "item-2",
},
{
id: "i3",
item: "item-3",
},
];
const ListElement = (props) => {
return <li className={props.className} onClick={props.onClick}>{props.children}</li>;
};
const Map = () => {
const [changedStyle, setChangedSTlye] = useState(false);
const styleHandler = () => {
changedStyle ? setChangedSTlye(false) : setChangedSTlye(true);
console.log("clicked");
console.log(changedStyle);
};
const List = Arr.map((l, index) => (
<ListElement key={index} onClick={styleHandler} className={changedStyle ? 'map-selected' : ''}>
{l.item}
</ListElement>
));
return List;
};
export default Map;
.map-selected{color:red;}
【问题讨论】:
标签: arrays reactjs dictionary object this