React setState() 不适用于单选字段 handleInput 方法
React setState() not working on radio field handleInput method
我正在研究 React 应用程序中的无线电提交方法。
handleSelect = e => {
const key = e.target.name;
const value = e.target.id;
this.setState({ [key]: value});
console.log(this.state);
}
这里是有问题的无线电场:
<div className="answer">
<Input type="radio"
id="day2AnswerA"
name="day2CorrectAnswer"
value={this.state.day2CorrectAnswer}
onChange={this.handleSelect}
/>
这是我的状态:
state = {
rocketName: '',
className:'',
day2QuestionName: '',
day2ReviewText: '',
day2QuestionText: '',
day2AnswerA: '',
day2AnswerB: '',
day2AnswerC: '',
day2AnswerD: '',
day2CorrectAnswer: '',
}
这将是具有多个单选字段的较大表单的一部分,所有单选字段都具有相同的 name
属性,因此一次只能选择一个。
我试图在用户选择单选字段后立即更新状态,例如,如果用户单击上面显示的单选字段,那么我想要 day2CorrectAnswer
属性要立即更新为 day2AnswerA
的状态。
为什么这不起作用?
我认为你应该更新在 Input 上检查的道具。 Radio input 使用 checked 属性来显示或不显示 checked 状态。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio
查看您的输入,我可以看到一个循环状态问题 - 每个无线电输入的值不能简单地是状态值,它必须有一个实际值 - 可能是一个字符串值,如 value="The Big Blue Bear" 和要确保输入受到控制,您想做的是让它的检查状态评估 day2CorrectAnswer 的状态值是否等于此输入的值。
我正在研究 React 应用程序中的无线电提交方法。
handleSelect = e => {
const key = e.target.name;
const value = e.target.id;
this.setState({ [key]: value});
console.log(this.state);
}
这里是有问题的无线电场:
<div className="answer">
<Input type="radio"
id="day2AnswerA"
name="day2CorrectAnswer"
value={this.state.day2CorrectAnswer}
onChange={this.handleSelect}
/>
这是我的状态:
state = {
rocketName: '',
className:'',
day2QuestionName: '',
day2ReviewText: '',
day2QuestionText: '',
day2AnswerA: '',
day2AnswerB: '',
day2AnswerC: '',
day2AnswerD: '',
day2CorrectAnswer: '',
}
这将是具有多个单选字段的较大表单的一部分,所有单选字段都具有相同的 name
属性,因此一次只能选择一个。
我试图在用户选择单选字段后立即更新状态,例如,如果用户单击上面显示的单选字段,那么我想要 day2CorrectAnswer
属性要立即更新为 day2AnswerA
的状态。
为什么这不起作用?
我认为你应该更新在 Input 上检查的道具。 Radio input 使用 checked 属性来显示或不显示 checked 状态。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio
查看您的输入,我可以看到一个循环状态问题 - 每个无线电输入的值不能简单地是状态值,它必须有一个实际值 - 可能是一个字符串值,如 value="The Big Blue Bear" 和要确保输入受到控制,您想做的是让它的检查状态评估 day2CorrectAnswer 的状态值是否等于此输入的值。