0

我正在研究 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.

为什么这不起作用?

4

2 回答 2

1

我认为您应该更新在 Input 上检查的道具。单选输入使用选中属性来显示或不显示选中状态。https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio

于 2019-01-24T22:06:04.450 回答
1

查看您的输入,我可以看到一个循环状态问题 - 每个无线电输入的值不能简单地是它必须具有实际值的状态值 - 可能是一个字符串值,如 value="The Big Blue Bear" 和您想要的确保输入受控的方法是让其检查状态评估 day2CorrectAnswer 的状态值是否等于该输入的值。

于 2019-01-24T22:07:58.173 回答