【发布时间】:2021-07-19 15:33:29
【问题描述】:
我是 React 的新手,所以这个问题听起来有点儿意思,但我想不通。所以我有两个按钮,当单击其中一个按钮时,我想在它们上添加类。所以按钮必须是默认的 className="button" 并且其中一个被点击它应该被添加到被点击的按钮“selected-button”类中。此外,当 Button1 单击时,应从 Button2 中删除“selected-button”。有时候我真的是 React 的新手,简单的事情可能会让人困惑,谢谢你的帮助。
import React, { Component } from "react";
import { Form } from "react-bootstrap";
export class InstantQuote extends Component {
constructor(props) {
super(props);
this.state = {
active: false,
};
}
toggleClass() {
const currentState = this.state.active;
this.setState({ active: !currentState });
}
render() {
const handleSubmit = (e) => {
e.preventDefault();
};
return (
<Form className="instantquote shadow p-3 mb-5" onSubmit={handleSubmit}>
<Form.Group controlId="formGroupFrom">
<div className="selectable-buttons">
<button type="submit"
className={((this.state.active) ? "button button-selected": "button")}
onClick={ () => this.setState({active: !this.state.active}) }>
Button1
</button>
<button type="submit"
className={((this.state.active) ? "button button-selected": "button")}
onClick={ () => this.setState({active: !this.state.active}) }>
Button2
</button>
</div>
</Form.Group>
</Form>
);
}
}
export default InstantQuote;
【问题讨论】:
-
你可以试试classnames包。 Set active class conditionally in React.
-
您的代码的一个问题是您没有在“button”和“button-selected”类之间添加任何空格,这意味着当 active 为 true 时,className 为“buttonbutton-selected” "
-
我可以像这样修复点击问题: 但是我仍然不知道如何在单击另一个按钮时删除该类
-
如果您在代码库中经常遇到动态类名分配,这个 npm 包将是一个不错的选择 => npmjs.com/package/classnames。