我有一個陣營組件具有實現懸停效果,因爲這樣的:如何實現懸停效果而不直接改變樣式?
let style = {
backgroundColor: "blue"
}
class someComponent extends React.Component{
constructor(props){
super(props)
this.state = {
hover: false
}
}
handleHover(event) {
this.setState({ hover: true });
}
handleExit(event) {
this.setState({ hover: false });
}
render(){
if(this.state.hover){
style.backgroundColor = "red"
} else {
style.backgroundColor = "blue"
}
return(
<Segment style={style} onMouseEnter={this.handleHover} onMouseLeave={this.handleExit} />
);
}
}
然而,即使它的工作,我得到一個錯誤說:
警告:
div
傳遞一個樣式對象以前被 變異。變異style
已棄用。考慮事先克隆它 。檢查Segment
的render
。
我擡頭一看,答案從這個post,和它說,實現這種方式:
const {styleFromProps} = this.props;
const newStyle = {...styleFromProps, marginTop: '45px'};
然而,我的風格是外部類定義,我不傳遞任何造型從父組件向下。所以我不太清楚如何在我的當前代碼中實現這個答案。
問題(S):
- 是這樣回答來實現懸停效果最好的方式,還是應該克隆組件,如錯誤提示?
- 我應該如何在我現有的組件中實現答案?必要時可以更改結構。
如果出現任何混淆,我會從構造函數中爲處理函數排除處理函數的.bind(this)語句 – Phillip