reactjs - 无法在 React.js 中添加活动类
问题描述
我正在尝试仅在单击事件上添加一个活动类,但它正在添加所有事件我有三个文本,每个文本在单击时都应该具有活动类,请查看我下面的代码中有什么问题,
class CategoryList extends React.Component {
state = {
productlist: [],
isActive: false
};
comingSoon(e) {
this.setState(activate => {
return { productlist: data.comingsoon, isActive: !activate.isActive };
});
}
boxOffice(e) {
this.setState(activate => {
return { productlist: data.boxoffice, isActive: !activate.isActive };
});
}
newRelease(e) {
this.setState(activate => {
return { productlist: data.newrelease, isActive: !activate.isActive };
});
}
render() {
return (
<div className="categoryList-container">
<div className="categoryList-text-wrapper">
<h5
className={this.state.isActive ? "active" : ""}
onClick={() => this.comingSoon(this)}
>
COMING SOON
</h5>
<h5
className={this.state.isActive ? "active" : ""}
onClick={() => this.boxOffice(this)}
>
BOX OFFICE
</h5>
<h5
className={this.state.isActive ? "active" : ""}
onClick={() => this.newRelease(this)}
>
NEW RELEASE
</h5>
</div>
解决方案
使用三个不同的变量。
class CategoryList extends React.Component {
state = {
productlist: [],
isActiveComing: false,
isActiveBox: false,
isActiveNew: false
};
comingSoon(e) {
this.setState(activate => {
return { productlist: data.comingsoon, isActiveComing: !activate.isActiveComing };
});
}
boxOffice(e) {
this.setState(activate => {
return { productlist: data.boxoffice, isActiveBox: !activate.isActiveBox};
});
}
newRelease(e) {
this.setState(activate => {
return { productlist: data.newrelease, isActiveNew: !activate.isActiveNew};
});
}
render() {
return (
<div className="categoryList-container">
<div className="categoryList-text-wrapper">
<h5
className={this.state.isActiveComing? "active" : ""}
onClick={() => this.comingSoon(this)}
>
COMING SOON
</h5>
<h5
className={this.state.isActiveBox ? "active" : ""}
onClick={() => this.boxOffice(this)}
>
BOX OFFICE
</h5>
<h5
className={this.state.isActiveNew ? "active" : ""}
onClick={() => this.newRelease(this)}
>
NEW RELEASE
</h5>
</div>
推荐阅读
- python - PyQt 启动时加载函数(qml 加载器)
- batch-file - 使用 mvn 依赖:build-classpath 输出文件的行大于 8192 个字符
- mpeg-dash - MPEG-DASH m4s 文件格式
- leaflet - Leaflet.js - 关于折线的问题
- php - 如何在 wordpress 多站点设置中自定义新站点的默认设置?
- docker - Docker compose,单独运行时不能与暴露的端口通信?
- woocommerce - 在 WooCommerce 中完全删除排序方式下拉列表
- amazon-web-services - 如何使用 API 网关和 lambda 为移动设备设置多个环境?
- php - 如何在 Google Cloud Platform Stackdriver Logging API 中获取“页面大小”选项以返回带有下一页令牌的分页条目
- javascript - 在具有自定义输出的 Highcharts 中使用柱形图类型?