Теперь я пытаюсь изменить стиль кнопки, когда событие щелчка происходит с реакцией.
Так что я подумал, что это правильный путь.
this.setState({
[e.target.className]:'button-hidden'
})
но не вышло.
Я хочу, чтобы при нажатии кнопки отображалось значение «скрыто» или «нет».
Как я мог получить доступ к этой проблеме?
не могли бы вы мне намекнуть?
Код JS такой.
export default class PlanBtn extends React.Component{
state = {
data:[{time:'1', value:'plug1', display:'button-hidden'},
... dummy data,]
}
removePlan=(e)=>{
console.info(e.target)
this.setState({
[e.target.className]:'button-hidden'
})
}
render(){
const list = this.state.data.map(
btn => (<button onClick = {this.removePlan} className = {btn.display}>{btn.value}</button>)
)
return (
<div id='plan-contain'>
<div className='plan'>
{list}
</div>
</div>
)
}
}
и css
#plan-contain{
text-align: center;
width: 100%;
padding: 0 0.2px;
}
.plan{
width:96%;
border-radius: 3px;
margin: 1px 1px;
}
.button-hidden{
visibility: hidden;
width:9%;
}
.button-reveal{
width:9%;
padding:0.5%;
background-color: #00cc99;
color: white;
border: none;
margin: 1px 1px;
text-decoration: none;
-webkit-transition-duration: 0.4s;
transition-duration: 0.4s;
cursor: pointer;
}
.button-reveal:hover{
background-color: white;
color: #00cc99;
border: 2px solid #00cc99;
}
Как я мог это обработать? если вы мне поможете, я буду очень рад



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Свойство отображения для конкретного элемента данных в состоянии лучше всего обновлять. Итак, я настроил функцию removePlan, чтобы взять ключ элемента. Возможно, стоит даже создать компонент для каждого элемента данных и управлять состоянием отображения там.
Проверь это -
class PlanBtn extends React.Component {
state = {
data: [{ time: "1", value: "plug1", display: "button-reveal" },
{ time: "2", value: "plug2", display: "button-reveal" }]
};
removePlan = (e, i) => {
console.info(e.target);
const dataNew = [...this.state.data];
dataNew[i].display = "button-hidden";
this.setState({
data: dataNew
});
};
render() {
console.info("here");
const list = this.state.data.map((btn, i) => (
<button onClick = {e => this.removePlan(e, i)} className = {btn.display}>
{btn.value}
</button>
));
return (
<div id = "plan-contain">
<div className = "plan">{list}</div>
</div>
);
}
}
Вы можете попробовать что-то подобное.
export default class PlanBtn extends React.Component{
state = {
data:[{time:'1', value:'plug1', display:'button-hidden'},
... dummy data,],
showStyle:flase
}
removePlan=(e)=>{
console.info(e.target)
this.setState({
showStyle:!this.state.showStyle
})
}
render(){
const list = this.state.data.map(
btn => (<button onClick = {this.removePlan}
className = {`${this.state.showStyle?'button-reveal':'button-hidden'}`}
>{btn.value}</button>)
)
return (
<div id='plan-contain'>
<div className='plan'>
{list}
</div>
</div>
)
}