【发布时间】:2020-05-12 20:04:15
【问题描述】:
我正在处理我网站上的多个复选框。这是我的状态
state = {
data: {
airport_transport: false,
night_club: false,
wifi: false,
parking: false,
swimming_pool: false,
restaurant: false,
gym: false,
air_conditioner: false,
laundry_services: false,
bar_lounge: false,
disabled_services: false,
elevator: false,
shuttle_bus_service: false,
cards_accepted: false,
},
errors: {},
};
这就是我处理复选框状态的方式。我只发布了几个处理方法
toggleChangeShuttle = () => {
let data = this.state.data;
data.shuttle_bus_service = !data.shuttle_bus_service;
this.setState({ data });
};
toggleChangeAirport = () => {
let data = this.state.data;
data.airport_transport = !data.airport_transport;
this.setState({ data });
};
toggleChangeCooling = () => {
let data = this.state.data;
data.air_conditioner = !data.air_conditioner;
this.setState({ data });
};
toggleChangeNightClub = () => {
let data = this.state.data;
data.night_club = !data.night_club;
this.setState({ data });
};
最后这就是我的渲染方式。我省略了额外的渲染方法
<div className="form-check">
<label className="container">
<input
type="checkbox"
checked={this.state.data.air_conditioner}
onChange={this.toggleChangeCooling}
className="form-check-input"
/>
<span className="checkmark"></span>
Air Conditioner
</label>
</div>
<div className="form-check">
<label className="container">
<input
type="checkbox"
checked={this.state.data.airport_transport}
onChange={this.toggleChangeAirport}
className="form-check-input"
/>
<span className="checkmark"></span>
Airport Transport
</label>{" "}
</div>
<div className="form-check">
<label className="container">
<input
type="checkbox"
checked={this.state.data.bar_lounge}
onChange={this.toggleChangeBarLounge}
className="form-check-input"
/>
<span className="checkmark"></span>
Bar Lounge
</label>{" "}
</div>
现在这看起来是手动的,有很多重复。有没有一种紧凑干净的方法来做到这一点?谢谢
【问题讨论】: