反应setState()在无线电字段handleInput方法上不起作用

时间:2019-01-24 21:59:23

标签: javascript reactjs forms radio-button react-state-management

我正在使用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

为什么这不起作用?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

看看您的输入,我会看到一个循环状态问题-每个无线电输入的值不能简单地是必须具有实际值的状态值-可能是像value =“ The Big Blue Bear”这样的字符串值,以及您想确保输入受到控制是要检查状态是否为day2CorrectAnswer的状态值等于此输入的值。