reactjs - 有没有办法循环遍历 div 并获取单击以添加类的 div?
问题描述
我有五个 div,我希望在单击时拥有一个活动类。我的 css 中已经有一个活动类,但我不知道如何在我的代码中添加它
import React from 'react';
import './filter.scss';
const Filter = (props) => {
return (
<div className="filter">
<div className="filter__alle active">
<p>Alle</p> <span>2</span>
</div>
<div className="filter__eiendom ">
<p>Eiendom</p> <span>2</span>
</div>
<div className="filter__familie ">
<p>Familie</p> <span>2</span>
</div>
<div className="filter__kontrakt">
<p>Kontrakt</p> <span>2</span>
</div>
<div className="filter__husarbeid ">
<p>Husarbeid</p> <span>2</span>
</div>
</div>
);
}
export default Filter;
解决方案
我认为更好的方法是在状态下保存活动 div 索引:
import * as React from "react";
import "./styles.css";
const data = [
{ name: "Alle", text: 2 },
{ name: "Eiendom", text: 2 },
{ name: "Familie", text: 2 },
{ name: "Kontrakt", text: 2 },
{ name: "Husarbeid", text: 2 }
];
const Filter = props => {
const [activIndex, setActiveIndex] = React.useState(null);
const handleClick = index => {
console.log(index);
setActiveIndex(index);
};
return (
<div className="filter">
{data.map((item, index) => (
<div
key={index}
className={
activIndex === index ? "filter__item active" : "filter__item"
}
onClick={() => handleClick(index)}
>
<p>{item.name}</p> <span>{item.text}</span>
</div>
))}
</div>
);
};
export default Filter;
推荐阅读
- c# - 如何在 C# 中的 LDAP 中进行身份验证?
- javascript - 为每个用户输入分配一个数字
- android-studio - AVD 管理器错误:“无法找到 adb”
- sql-server - 使用存储过程搜索和插入数据(如果不存在)
- mysql - 在平均堆栈应用程序中存储用户的应用程序状态
- r - 按小时创建日期和时间向量
- gatsby - 如何在 URL 开头的 Gatsby 中创建动态路由
- c# - 仅在 WPF C# 中加载表单后,如何触发函数(开始处理)?
- linux - 如何修复 mongodb 损坏的安装
- microsoft-graph-api - 将文件夹中的消息列表(过滤的消息)移动到另一个文件夹