【发布时间】:2019-09-04 19:40:18
【问题描述】:
我想在点击时切换一个 fontAwesome 图标类名。单击时,图标应更改颜色并调用将对象添加到服务器中收藏列表的服务(因此,我使用 e.currentTarget 的原因:我需要记住单击了哪个图标)。此代码在第一次单击时有效,但在第二次单击时无法将类改回(进行检查,它说 FA 的类名等于“对象对象”)。知道如何解决吗?
<FontAwesomeIcon onClick={this.ToggleClass} size={"sm"} icon={faHeart} />
ToggleClass = (e) => {
const heart = {
color: "#E4002B",
}
const clicked = {
color: "#E4002B",
background: "red"
}
if (e.currentTarget.className.baseVal != heart && e.currentTarget.className.baseVal != clicked) {
return e.currentTarget.className.baseVal === clicked;
#Callservicehere
}
else if (e.currentTarget.className.baseVal === clicked) {
e.currentTarget.className.baseVal = heart;
#callservicehere
}
}
【问题讨论】:
-
让我们看看
ToggleClass的定义。 -
抱歉,粘贴的时候忘记改名字了。请查看更新版本。
-
使用 e.currentTarget 有点矫枉过正。您可以只在 css 中创建类而不是 css 的变量,并在单击时切换状态。根据状态切换图标。你可以看看这个链接toggle icon
-
这不起作用,因为我有几个图标,我只想使用一种方法。因此 e.currentTarget
-
每次调用该函数时,您都会创建新对象,因此比较永远不会正确。 “旧”对象永远不会与“新”对象相同,即使它包含相同的元素。
标签: reactjs