ReactJs警告:不推荐使用变体`style`。考虑事先克隆它

时间:2016-07-05 08:50:45

标签: javascript reactjs

我收到以下警告:

inWarning: `div` was passed a style object that has previously been mutated. Mutating `style` is deprecated. Consider cloning it beforehand. Check the `render` of `xxx`. Previous style: {backgroundColor: "#000000"}. Mutated style: {backgroundColor: "#002a09"}. 

当尝试将一个样式属性分配给div时,即使克隆了原始对象(我也尝试过使用JSON.parse(JSON.stringify())而没有成功)。

你能告诉我为什么我收到这个错误以及如何解决它。

   var clone = Object.assign({}, this.state.selectedColor);
   this.styles.previewColorHover.backgroundColor = clone.hex

在我的渲染函数中:

<div ref='previewColor' id={'preview-color-' + this.props.id}
    style={this.styles.previewColorHover}>
</div>

2 个答案:

答案 0 :(得分:2)

您没有克隆previewColorHover

  var clone = Object.assign({}, this.styles.previewColorHover);
   this.styles.previewColorHover = clone;
   this.styles.previewColorHover.backgroundColor = this.state.selectedColor.hex

答案 1 :(得分:1)

您正在克隆selectedColor对象,而不是样式对象。

执行以下操作

var clone = Object.assign({}, this.state.selectedColor);
this.styles.previewColorHover.backgroundColor = clone.hex
var style = {};
style["previewColorHover"] = {backgroundColor : clone.hex}

并将div中的样式对象用作

<div ref='previewColor' id={'preview-color-' + this.props.id}
    style={style.previewColorHover}>
</div>