jsx函数组件中获取多个相同class,然后根据身份将样式修改为display:none
时间: 2024-04-30 22:23:31 浏览: 142
可以使用React的Hooks中的useState来实现这个功能。
首先,需要使用React的内置方法useEffect,在组件渲染后获取相同的class元素,并将其存储在useState中。
然后,在useState中存储的元素中遍历,根据身份选择要隐藏的元素,并将其样式修改为display:none。
以下是一个示例代码:
```jsx
import React, { useState, useEffect } from 'react';
function ExampleComponent() {
const [elements, setElements] = useState([]);
useEffect(() => {
const elements = document.querySelectorAll('.example-class');
setElements(elements);
}, []);
const hideElements = (identity) => {
elements.forEach((element) => {
if (element.dataset.identity === identity) {
element.style.display = 'none';
}
});
};
return (
<div>
<div className="example-class" data-identity="admin">Admin Element</div>
<div className="example-class" data-identity="user">User Element</div>
<div className="example-class" data-identity="guest">Guest Element</div>
<button onClick={() => hideElements('admin')}>Hide Admin Elements</button>
</div>
);
}
export default ExampleComponent;
```
在这个例子中,我们首先使用querySelectorAll获取了所有class为example-class的元素,并将其存储在useState中。
然后,我们定义了一个hideElements函数,它接受一个identity参数,用于标识要隐藏哪些元素。在函数中,我们使用forEach遍历useState中存储的元素,并根据它们的data-identity属性,选择要隐藏的元素,并将其样式修改为display:none。
最后,在组件中,我们渲染了一些带有data-identity属性的div元素,并使用一个按钮来调用hideElements函数,将身份为admin的元素隐藏。
阅读全文