ReactJs 将 'active' class 添加到按钮列表中的按钮
ReactJs adding 'active' class to a button in a list of buttons
我有一个使用 .map 函数动态创建的按钮列表。我正在尝试向按钮 onClick 添加一个“活动”class 并删除其他按钮的“活动”class。
这就是我目前所拥有的。问题是它添加了 class 但没有去掉其他按钮上的 class。任何帮助表示赞赏!谢谢:)
const Buttons = (props) => {
const [active, setActive] = useState(false);
const handleClick = (event) => {
event.preventDefault();
setActive(true)
}
const buttons = props.buttons.map((btn,index) => {
return(
<button className={active === true ? 'active' : ''} id={btn.id} onClick={handleClick}>{btn.name}</button>
)
})
return (
<div>
{buttons}
</div>
)
}
export default Buttons;
由于您需要知道哪个按钮处于活动状态,因此最好将活动按钮的id
存储在状态中,而不仅仅是一个布尔值。这样,您就可以准确地知道在映射它们时应该激活哪个。
const Buttons = (props) => {
const [active, setActive] = useState();
const handleClick = (event) => {
event.preventDefault();
setActive(event.target.id);
}
const buttons = props.buttons.map((btn, index) => {
return (
<button
key={btn.id}
className={active === btn.id ? "active" : undefined}
id={btn.id}
onClick={handleClick}
>
{btn.name}
</button>
);
});
return <div>{buttons}</div>;
};
export default Buttons;
我有一个使用 .map 函数动态创建的按钮列表。我正在尝试向按钮 onClick 添加一个“活动”class 并删除其他按钮的“活动”class。
这就是我目前所拥有的。问题是它添加了 class 但没有去掉其他按钮上的 class。任何帮助表示赞赏!谢谢:)
const Buttons = (props) => {
const [active, setActive] = useState(false);
const handleClick = (event) => {
event.preventDefault();
setActive(true)
}
const buttons = props.buttons.map((btn,index) => {
return(
<button className={active === true ? 'active' : ''} id={btn.id} onClick={handleClick}>{btn.name}</button>
)
})
return (
<div>
{buttons}
</div>
)
}
export default Buttons;
由于您需要知道哪个按钮处于活动状态,因此最好将活动按钮的id
存储在状态中,而不仅仅是一个布尔值。这样,您就可以准确地知道在映射它们时应该激活哪个。
const Buttons = (props) => {
const [active, setActive] = useState();
const handleClick = (event) => {
event.preventDefault();
setActive(event.target.id);
}
const buttons = props.buttons.map((btn, index) => {
return (
<button
key={btn.id}
className={active === btn.id ? "active" : undefined}
id={btn.id}
onClick={handleClick}
>
{btn.name}
</button>
);
});
return <div>{buttons}</div>;
};
export default Buttons;