javascript - 更改元素的类名
问题描述
我试图动态更改元素的类名但未成功。这是我的尝试
this.state = {
element: [<div className="changeMe"></div>]
}
changeClassName(){
let tmp = this.state.element[0]
tmp.className="new class name"
this.setState({element[0]: tmp})
}
render(){
return(
<Button onClick={this.changeClassName()}>Change the class name</Button>
)
}
有什么建议么?
解决方案
除了将 JSX 存储在您的状态中,您还可以拥有一个包含您className
在渲染方法中使用的字符串的状态变量。changeClassName
然后将只负责更改此字符串的状态。
例子
class App extends React.Component {
state = {
className: "changeMe"
};
changeClassName = () => {
this.setState(prevState => ({
className: prevState.className === "changeMe" ? "newClassName" : "changeMe"
}));
};
render() {
const { className } = this.state;
return (
<div className={className}>
<button onClick={this.changeClassName}>
Change the class name ({className})
</button>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
推荐阅读
- jmeter - java.sql.SQLException:无法创建 PoolableConnectionFactory
- sql - 仅当另一个字段等于“X”VBA 访问时才显示字段值
- laravel - 使用 bitnami/latavel docker 镜像部署 Laravel
- python - 有没有办法替换熊猫数据透视表中的字符串?
- php - 删除字符串片段
- python - 如何使用 matplotlibs 颜色图 alpha 值使三色图淡入透明?
- openssl - 如何使用 OpenSSL 计算 RSA 公钥指纹?
- swift - 转动设备时如何确保使用 CLLocationManager 获得所有程度的航向?
- javascript - 为遇到的每个部分包装 li 项目
- javascript - 为什么`daterange`显示无效日期?