javascript - 根据状态更改按钮的 className 无法正常工作
问题描述
我正在尝试根据按钮是否处于活动状态来更改按钮的 CSS。出于某种原因,即使我为它分配了三元条件的值,className 也没有出现在我的 HTML 中。
var [isActive] = useState(false);
var [btn_class] = useState('');
const addOrRemove = (array, value) => {
var index = array.indexOf(value);
if (index === -1) {
array.push(value);
isActive = !isActive;
} else {
array.splice(index, 1);
isActive = !isActive;
}
btn_class = isActive ? 'noBackground' : 'background';
};
<div>
<Button
onClick={e => addOrRemove(formData.interests, e.target.value)}
value="Front-End Engineering"
className={btn_class}
>
Front-End Engineering
</Button>
<Button
onClick={e => addOrRemove(formData.interests, e.target.value)}
value="Back-End Engineering"
className={btn_class}
>
Back-End Engineering
</Button>
</div>
我正在寻找完全类似的东西,但这种方法行不通。
解决方案
根据文档,您需要一个 setter 函数来更改状态。
您的状态声明如下所示:const [isActive, setIsActive] = useState(false);
在您的 addOrRemove 函数中,调用setIsActive(!isActive);
推荐阅读
- c# - 将 AspNetUser Id 类型从 String 更改为 Int 后出现 FormatException
- python - Python shlex posix 使用困境
- javascript - Flask GET 请求不加载页面
- javascript - 在字符串“html”内的 Node.js 中加载基本 HTML
- visual-studio - 找不到 Xamarin.Forms.Platform、Xamarin.Forms.Platform.Android pdb 符号
- c++ - 为什么我不能链接“xlnt”库?
- python - Python argparse @fromfile 参数无法识别
- tornado - AttributeError:模块'asyncio'没有属性'Future'
- c - 在结构定义的 C 语言列表中添加/删除条目
- r - 将 R 数据帧转换为 JSON