gpt4 book ai didi

javascript - 如何将颜色置于React状态?

转载 作者:行者123 更新时间:2023-12-01 03:05:17 25 4
gpt4 key购买 nike

我有一个有状态组件,单击它后会更改 div 背景颜色。我将 bool 标志保留在状态中,当它发生变化时,组件会重新计算其颜色并重新渲染自身。

我怎样才能摆脱这个 bool 标志,我想保持颜色本身的状态,当颜色状态改变时,组件将重新渲染自身。

class App extends React.Component {
constructor(props) {
super(props);
this.state = { flag: true };
}
changeColor(){this.setState({flag: !this.state.flag})};

render(){
var bgColor = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
return ( <div style={{backgroundColor: bgColor}} onClick={this.changeColor.bind(this)}>wonderful</div> );
}
}

ReactDOM.render(<App />, document.getElementById('root'));

最佳答案

将其移至changeColor函数

var bgColor = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';

然后将bgColor存储在同一changeColor函数内的状态中,例如

this.setState({ color: bgColor });

例如

class App extends React.Component {

constructor(props) {
super(props);
this.state = {color: null};
}

changeColor(){
this.setState({
color: 'rgb(' + (Math.floor(Math.random() * 256)) + ',' +
(Math.floor(Math.random() * 256)) + ',' +
(Math.floor(Math.random() * 256)) + ')' })
};
}

render(){
return (
<div style={{backgroundColor: this.state.color}}
onClick={this.changeColor.bind(this)}
>
wonderful
</div>
);
}

关于javascript - 如何将颜色置于React状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com