【发布时间】:2023-03-10 10:53:01
【问题描述】:
我无法让复选框对其 onChange 事件做出反应(复选框保持默认状态)。我在这里看到过类似的帖子,但似乎没有任何效果。我希望另一双眼睛可以帮助找出我的逻辑出了什么问题。
这里是handleChange函数,输入字段的初始值都在父组件中
const [accountData, setAccountData]=useState({accountType:'Free', //default input value for text input
accountStatus: false }) //default input for checkbox input
const handleSubmit={/*submitLogic*/}
const handleChange = e =>{
const target = e.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
setAccountData({...accountData, [name]:value})
}
//passing the handle change as a prop to the EditView component\\
<EditView handleChange={handleChange} handleSubmit={handleSubmit} data={accountData}/>
这是包含输入表单的子组件(关注的是 复选框,因为文本输入字段对其 onChange 事件作出反应)。
const EditView = ({ handleChange, handleSubmit, data}) =>{
const isChecked=data.accountStatus;
<form onSubmit={handleSubmit}>
<div className="form-row" >
<div className="form-group col-md-6">
< label htmlFor="accountType">Account Type:</label>
<input
type="text"
className="form-control"
id="accountType"
name="accountType"
value={data.accountType}
onChange={handleChange}/>
</div>
<div className="form-group col-md-6">
< label htmlFor="accountStatus">Account Status:</label>
<div className="custom-control custom-switch">
<input
type="checkbox"
className="custom-control-input "
id="accountStatus"
name='accountStatus'
checked={isChecked}
//value={isChecked}
onChange={handleChange}
/>
</div>
</div>
<button type='submit' >Submit</button>
</form>
}
我什至尝试创建一个不同的 onChange 句柄函数,但仍然遇到同样的问题。我在上面的代码中做错了什么使我的复选框不会从默认状态改变吗?
【问题讨论】:
-
不是您的问题的一部分,但元素名称前有空格的元素(如
< label htmlFor)将无法正确呈现
标签: javascript reactjs