【发布时间】:2020-12-17 23:57:46
【问题描述】:
我正在开发一个测验应用项目来学习如何做出反应。我遇到了一种情况,我需要将不正确的选项存储在数组中的测验问题中。然后将信息传递给数据库。 这是一个示例 JSON 格式。
{
incorrect_answers:["Jeff Bezos","Satya Nadela","Bill Gates"] }
不正确的答案是一个数组,需要通过单独的文本框为每个不正确的选项输入值,就像这样。 option input form
我被卡住的部分是将它们附加到数组中,这是我的尝试。
export default class CreateQuiz extends Component{
constructor(props){
super(props);
this.onChangedIncorrectAnswer=this.onChangedIncorrectAnswer.bind(this);
this.onSubmit=this.onSubmit.bind(this);
this.state={
incorrect_answers:[]
}
}
onChangedIncorrectAnswer(e){
const option=e.target.value
this.setState({
incorrect_answers:[...this.state.incorrect_answers,option]
});
}
onSubmit(e){
e.preventDefault();
const quiz = {
incorrect_answers:this.state.incorrect_answers
}
console.log(quiz);
axios.post("http://localhost:3000/quizes",quiz)
.then(res=>console.log(res.data));
window.location='/quiz-list';
}
render(){
return (
<div>
<h3>Create New Quiz</h3>
<form onSubmit={this.onSubmit}>
<div className="form-group">
<label>Incorrect Option 1</label>
<input type="text"
required
className="form-control"
value={this.state.incorrect_answers[0]}
onChange={this.onChangedIncorrectAnswer}
/>
</div>
<div className="form-group">
<label>Incorrect Option 2</label>
<input type="text"
required
className="form-control"
value={this.state.incorrect_answers[1]}
onChange={this.onChangedIncorrectAnswer}
/>
</div>
<div className="form-group">
<label>Incorrect Option 3</label>
<input type="text"
required
className="form-control"
value={this.state.incorrect_answers[2]}
onChange={this.onChangedIncorrectAnswer}
/>
</div>
<div className="form-group">
<input type="submit" value="Submit Quiz" className="btn btn-primary"/>
</div>
</form>
</div>
)
}
}
但是表单没有按预期工作。当我在“选项 1”文本框中输入第一个选项的内容时,只有第一个字符存储在“选项 2”中,以此类推。
【问题讨论】:
-
请记住尽可能简化您的示例。您的示例中是否有我们不需要查看的部分?您还需要解释实际发生的情况。有什么东西要添加到数组中吗?表单提交不正确?
标签: javascript arrays reactjs forms react-state-management