我想在添加/删除按钮的同时从父DOM元素添加/删除类,就像我单击添加类按钮一样,然后它将新的类名称“单击”添加到父div,并在单击删除类时将其删除按钮:
index.html
<div class="main-div">
<div class="second-div" id="config">
</div>
</div>
config.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import Main from 'Main';
ReactDOM.render(
<Main/>,
document.getElementById('config')
);
Main.jsx
import ReactDOM from 'react-dom'
import React from "react";
import createReactClass from "create-react-class";
export default createReactClass({
getInitialState() {
return {
show-main-div: false
};
},
addClass() {
// want to add new class on parent DOM element i.e <div class="main-div">
},
render: function () {
return (
<div>
<button className="add-class" onClick={() => {this.addClass()}}>
Add Class
</button>
<button className="remove-class" onClick={() => {this.removeClass()}}>
Remove Class
</button>
</div>
);
}
});
答案 0 :(得分:3)
我建议您执行以下操作:
import ReactDOM from 'react-dom'
import React from "react";
import createReactClass from "create-react-class";
export default createReactClass({
getInitialState() {
return {
main_div_class: "some_initial_class"
};
},
addClass() {
// append the class you want to add to this.state.main_div_class
this.setState({main_div_class: new_value_with_added_class})
},
removeClass() {
// remove the class you want to add from this.state.main_div_class
this.setState({main_div_class: new_value_with_removed_class})
}
render: function () {
return (
<div className={this.state.main_div_class}>
<button className="add-class" onClick={() => {this.addClass()}}>
Add Class
</button>
<button className="remove-class" onClick={() => {this.removeClass()}}>
Remove Class
</button>
</div>
);
}
});
我同意Bhojendra的回答,但是使用状态总是比引用更好。参见here
答案 1 :(得分:2)
分配参考并添加/删除所需的课程:
addClass() {
this.divRef.current.classList.add('main-div')
},
removeClass() {
this.divRef.current.classList.remove('main-div')
}
render: function () {
return (
<div ref={this.divRef}>
<button className="add-class" onClick={() => {this.addClass()}}>
Add Class
</button>
<button className="remove-class" onClick={() => {this.removeClass()}}>
Remove Class
</button>
</div>
);
}
// note: you have to create a ref inside the constructor:
this.divRef = React.createRef()
答案 2 :(得分:1)
您可以添加和删除特定div(onClick)的类。如果必须设置和删除按钮之类的状态,最好使用setState
to set visible to true
答案 3 :(得分:1)
您可以查看目标类表单BOM元素,并从类列表中删除类,例如event.target.classList.remove('您要删除的类名称')
答案 4 :(得分:1)
编写上述答案,但使用 useRef 和 setTimeout 根据特定时间间隔添加/删除类
import React,{useRef} from 'react';
export default some fucntion ... {
Note: You have to first define your useRef.
const node = useRef(""); // this is your initial value of ref
// this is called when the div is clicked
const handingRef = ()=>{
let timeout = null;
// to add class, you can do
node.current.classList.add("name of the class");
// to remove the class, you can do
node.current.classList.remove("name of the class");
// to clear setInterval
if(timeout){
clearTimeout(timeout)
timeout=null;
}
// if you want to remove a class after some time
setTimeout(()=>{
node.current.classList.remove('Section1-row1-shopClosed')
},time in milli-second)
}
return(){
<div>
...
<div ref={node} onClick={handingRef}> {content ... } </div>
</div>
}
}