javascript - React Hooks - 将 map() 函数中的类名仅设置为一项
问题描述
我正在映射一个项目列表,当单击一个时,我想将它的颜色更改为粉红色。我正在使用钩子来设置状态,但问题是,当单击一个项目时,它们都变成粉红色(所以都分配了 className.
const ButtonCustom = () => {
const [menuState, setMenuState] = React.useState(false);
let className = "RichEditor-styleButton"
{
menuActive === true?
className += " RichEditor-styleButton-active":(null)
}
return (
<span
className={className}
onClick={() => setMenuState(!menuActive)}
>
{value}
</span>
);
}
const Home = () => {
return(
<div>
{items.map((button) => {
return ButtonCustom();
})}
</div>
)
}
解决方案
这是一个奇怪的语法。我会这样重写它:
const ButtonCustom = () => {
const [menuActive, setMenuActive] = React.useState(false);
let className = "RichEditor-styleButton"
if (menuActive === true) {
className += " RichEditor-styleButton-active";
}
return (
<span
className={className}
onClick={() => setMenuActive(active=>!active)}
>
{value}
</span>
);
}
const Home = () => {
return(
<div>
{items.map((button, index) => {
return <ButtonCustom key={index}/>;
})}
</div>
)
}
主要关注模糊的 menuActive/menuState 和字符串定义后的 {} 块。还要注意Home组件上的“key”属性
推荐阅读
- flutter - 在颤振单元测试中找到 Radio 小部件
- azure-machine-learning-studio - Azure ML 语音训练模型
- java - Keycloak RC4-带 Hmac
- python - 不明白这个 IndentationError
- scala - 我们如何将 java 中的反应式 JDBC 调用转换为 scala 中的 Future?
- java - 在没有活动的情况下在后台执行android应用
- python - 蟒蛇错误“
缺少 1 个必需的位置参数:'self'" - visual-studio-code - 从 VSCode 的编辑器栏中隐藏文件路径和名称引用
- r - 对最终数据帧进行验证检查以标记不规则调用
- go - 如何决定并发操作的数量?