javascript - 如何使我的复选框仅被单击一次,而在 React.js 中未选中其他复选框
问题描述
我按照教程创建了一个表单,其中包含要单击的多个复选框。但是,在另一种情况下,我只需要检查一个框。复选框的值是动态的,你永远不知道会创建多少个复选框。但是,只能点击一个。你能帮我找到解决方案吗谢谢。
import React, { Component } from 'react';
import Checkbox from "./Checkbox.component";
class PatientSelectTiming extends Component {
state = {
options: [...this.props.props],
checkboxes: [...this.props.props].reduce(
(options, option) => ({
...options,
[option]: false
}),
{}
),
appointmentSlots: null
};
handleCheckboxChange = e => {
const { name } = e.target;
this.setState(prevState => ({
checkboxes: {
...prevState.checkboxes,
[name]: !prevState.checkboxes[name]
}
}))
}
handleFormSubmit = formSubmitEvent => {
formSubmitEvent.preventDefault();
Object.keys(this.state.checkboxes)
.filter(checkbox => this.state.checkboxes[checkbox])
.forEach(checkbox => {
let appointmentSlot = [];
appointmentSlot.push(checkbox);
console.log(appointmentSlot);
this.setState({appointmentSlots: appointmentSlot})
localStorage.setItem('appointmentSlots', JSON.stringify(appointmentSlot))
});
};
createCheckbox = option => (
<Checkbox
label={option}
isSelected={this.state.checkboxes[option]}
onCheckboxChange={this.handleCheckboxChange}
key={option}
/>
);
createCheckboxes = () => this.state.options.map(this.createCheckbox);
render() {
return (
<div>
<p>Only select one item and only first date clicked will be your time</p>
<form onSubmit={this.handleFormSubmit}>
{this.createCheckboxes()}
<button type="submit">
Save
</button>
</form>
{this.state.appointmentSlots === null ? <p>Click on any slot to get your time.</p> : <p>Your time is {JSON.parse(localStorage.getItem("appointmentSlots"))}</p>}
</div>
)
}
}
export default PatientSelectTiming;
解决方案
您可以使用单选按钮 https://www.w3schools.com/tags/att_input_type_radio.asp 单选按钮与复选框相同,但仅允许用户仅选中 1 个选项。
推荐阅读
- scikit-learn - 随机森林 sklearn-OOB 分数
- html - 使用链接或 CSS 按钮更改悬停时的图像
- git - 在gitlab中本地合并后无法推送
- sql - 有没有办法在 X PRECENDING 和 CURRENT ROW 之间动态设置 ROWS?
- ios - React Native 和 RNFirebase iOS 版本构建失败
- python - 在熊猫中为每组添加一个带有计数器的列
- c# - ASP.NET MVC DataAnnotation 需要 1 from 3 属性
- javascript - FreeCodeCamp:使用 For 循环遍历数组的所有项
- html - 将鼠标悬停在 img 上时表格必须可见
- java - Intellij Spring Boot 运行配置