React样式修改背景失效

背景介绍

在这里插入图片描述
点击后,将不透明的按钮修改为渐进透明的按钮。代码如下:
点击前:

let style = this.props.style;
style["background"] = "rgba(250,103,37,1)";
//...
return (
<div style={this.style}>立即下载</div>
);

点击后:

let style = this.props.style;
let progStr= Math.floor(progress*100)+"%";
style["background"] = `linear-gradient(to right,${this.backColor} ${progStr}, rgba(39,42,38,0.1) 0%);`;
//...
return (
<div style={this.style}>已下载{progStr}</div>
);

出现的问题:修改style对象后,背景色没有进行刷新,还是不透明的橙色。

问题分析

1、style对象修改,react采用的是对象引用地址比较,对于它而言,样式没有修改,所以不会刷新。采用深拷贝解决。
2、采用1后,style对象是改变了,但是显示时,渐进透明下还有之前设置不透明的橙色,相当于了

background:rgba(250,103,37,1) linear-gradient(to right,rgba(250,103,37,1) 40%, rgba(39,42,38,0.1) 0%);

其实显示的内联样式是

background:linear-gradient(to right,rgba(250,103,37,1) 40%, rgba(39,42,38,0.1) 0%);

可能是我浏览器内核的原因,在开发者工具上,去除background在勾上就可以正常显示了。对于它而言,我只修改background-image,没有改动background-color,就不重绘了。
采用下面这种方法修改样式就可以解决:

let style = clone(this.props.style);style["backgroundColor"] = this.backColor;style["backgroundImage"] = `linear-gradient(to right,${this.backColor} ${progStr}, rgba(39,42,38,0.1) 0%);`;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部