本教程操作环境:windows10系统、React18.0.0版、Dell G3电脑。react怎么实现点击时改变样式?React点击/hover修改CSS样式(1)点击修改样式方法一:(typescript写法)type state =
本教程操作环境:windows10系统、React18.0.0版、Dell G3电脑。
react怎么实现点击时改变样式?
React点击/hover修改CSS样式
(1)点击修改样式
方法一:(typescript写法)
type state = {
selected: boolean;
};
class Measurement extends Component<{}, state> {
constructor(props:any) {
super(props);
this.state = { selected: false };
}
handleClick = (e:any) => {
this.setState({ selected: !this.state.selected }, () => {
if(!this.state.selected){
this.clearAll();
}
});
}
private rightBtnStyle: CSSProperties = {
background:"url(/assets/images/3.png) no-repeat center",
border: "none",
color: "white"
};
private rightBtnStyle2: CSSProperties = {
background:"url(/assets/images/1.png) no-repeat center",
border: "none",
color: "white"
};
//省略具体功能
render() {
var currentstyle;
if(this.state.selected){
currentstyle=this.rightBtnStyle2;
}
else{
currentstyle=this.rightBtnStyle;
}
return(
<div className="tool-widget">
<Popover placement="left" content={this.content} trigger="click">
<Button className="right-btn" style={currentstyle} onClick={this.handleClick.bind(this)}></Button>
</Popover>
</div>
);
}
};
PS: 此处点击切换状态时所执行的功能可以通过setState中的回调函数实现。
方法二:(动态添加className)
上述render换成如下
render() {
return (
<div className="tool-widget" id="Measurement">
<Popover placement="left" content={this.content} trigger="click">
<Button className={["right-btn", this.state.selected ? "active":null].join(' ')} onClick={this.handleClick.bind(this)}></Button>
</Popover>
</div>
);
}
对应的css文件添加:
#Measurement {
.right-btn{
background:url(./images/3.png) no-repeat center;
border:none;
color: white;
width:100%;
height: 100%
}
.right-btn.active{
background:url(./images/1.png) no-repeat center;
}
}
以上就是react怎么实现点击时改变样式的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: react怎么实现点击时改变样式
本文链接: https://www.lsjlt.com/news/206225.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2023-05-25
2023-05-25
2023-05-25
2023-05-25
2023-05-25
2023-05-24
2023-05-24
2023-05-24
2023-05-24
2023-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0