【发布时间】:2019-05-16 14:36:17
【问题描述】:
我在一张桌子上有三个<td>。我想独立更改<td> 的颜色。 onClick ,弹出一个 Modal ,您可以选择颜色。现在,当我将颜色设置为状态时,所有<td> 都会更改它们的背景颜色。我想独立更改每个<td> 的颜色。所以一个<td> 可能是红色,另一个<td> 是绿色,另一个<td> 是黄色。
state = { visible: false, color: "", text: "" };
showModal = () => {
this.setState({
visible: true
});
};
boxes1 = (value, text) => {
console.log("dssdf", value);
this.setState(
{
color: value,
text: text
},
() => console.log("this is wt", this.state.color)
);
};
boxes2 = (value, text) => {
console.log("vf", value);
this.setState(
{
color: value,
text: text
},
() => console.log("this is wt", this.state.color)
);
};
boxes3 = (value, text) => {
console.log("sds", value);
this.setState(
{
color: value,
text: text
},
() => console.log("this is wt", this.state.color)
);
};
render() {
const yellow = "yellow";
const blue = "blue";
const reenter code hered = "red";
const text = "colors";
let s = [1, 2, 3];
let d = s.map(tables => (
<div>
<table
style={{
border: "1px solid black",
width: "70px",
background: `${this.state.color}`
}}
>
<thead>
<tr>
<td onClick={this.showModal}>{this.state.text}Change
colors
</td>
</tr>
</thead>
</table>
</div>
));
return (
<div>
{d}
<Modal
title="Basic Modal"
visible={this.state.visible}
onOk={this.handleOk}
onCancel={this.handleCancel}
>
<div className="boxes" onClick={()=>this.boxes1(yellow,text)}>
YELLOW
</div>
<div className="boxes" onClick={() => this.boxes2(red,text)}>
RED
</div>
<div className="boxes" onClick={() => this.boxes3(blue,text)}>
BLUE
</div>
</Modal>
</div>
);
}
}
预期:当单击单个 <td> 时,背景颜色应仅针对该 <td> 更新进行更新。
实际:点击后,所有<td>的背景颜色都会改变
【问题讨论】:
-
我可以在代码中看到单个 td 但点击是从不同的 div 触发的,所以你想用类名框或单个 td 更改 div 的颜色?
-
单个 td 被映射 3 次,所以这会创建三个 td [boxes],我想要做的是,单击单个 td,我只需要更改该 td 的背景颜色.
-
一个table里面有3个td应该是:每三个table里面都有td
标签: javascript arrays reactjs