【发布时间】:2019-01-20 04:51:42
【问题描述】:
我正在创建一个加密应用程序,我想在价格下跌时将背景颜色更改为红色,在价格上涨时将背景颜色更改为绿色,然后在 2 秒后使用 setTimeout 将背景更改为正常。
我尝试了两种不同的方法来至少改变背景颜色,但在这两种情况下我都得到了以下错误
您尝试将键 backgroundColor 设置为 #ffe5e5 在一个本来是不可变的并且已被冻结的对象上。
我询问了separate question for the same,但由于某种原因,我收到的回复并不令人信服。
后记,我尝试了一种不同的方法(不允许使用 StyleSheet 的方法),但我仍然遇到同样的错误。
我把我的新代码放在这里(你可以从问题中参考我以前的代码)
首先我在这样的全局范围内声明了一个对象
var upperRow = {
display: "flex",
flexDirection: "row",
marginBottom: 5,
backgroundColor: "white"
}
class CoinCard extends Component {
然后我尝试像这样更改背景颜色
componentWillReceiveProps(nextProps) {
if (this.props.coinPrice != nextProps.coinPrice ) {
if (this.props.coinPrice > nextProps.coinPrice) {
upperRow["backgroundColor"] = "#ffe5e5";
}
}
然后像这样分配样式
return (
<View style={container}>
<View style={upperRow}>
[问题:] 如何动态更改样式?
【问题讨论】:
-
只是想知道,有什么理由它是
CoinCard之外的变量吗? -
@Dan 没有具体原因,可能是一种糟糕的编码习惯,试图让事情正常进行
标签: reactjs react-native