Im在ReactJS中编译项目。我有一些可以被用户点击的div。默认情况下,每个div的背景颜色应该设置为绿色,但点击后它应该变成红色(意味着这个特定的div已经被点击并且进一步点击它不会有任何区别)。我设置CSS类的想法是在className内部,我有一个基于数组中对应值的三元if语句。我提出的解决方案没有做任何事情,没有出现任何错误。我怎样才能实现我的目标?如何根据ReactJS中的状态变量值分配CSS类
代码:
var style = require('./board.css');
var React = require('react');
class board extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
this.state = {
fieldClicksArray: [
false, false, false,
false, false, false,
false, false, false
]
}
}
handleClick(index) {
if (this.state.fieldClicksArray[index] === false) {
this.state.fieldClicksArray[index] = true;
}
render() {
return (
<div className="parent">
<div className={this.state.fieldClicksArray[0] ? 'red' : 'green'} onClick={() => this.handleClick(0)}>1</div>
</div>//parent
)//return
}//render
}//class
export default board;
的CSS:
.red {
background-color: red;
}
.green {
background-color: green;
}
我相信这行: 'newArray [index] === false;'你想把它设置为true。我改变了这一点。此外,我已经尝试了您的建议,仍然没有任何更改,并没有出现错误 –
@AleksanderSadaj有一些语法错误。我已经删除它们。请参阅片段。 – nrgwsth
由于您在原始阵列上操作,因此这会直接修改状态。 –