以下是相关代码:
onAnswerChange = (e) => {
e.preventDefault();
const answerID = e.target.id
const answerVal = e.target.value
this.setState( (prevState) => {
let allAnswers = prevState.answers
allAnswers[answerID] = answerVal
return {answers: allAnswers}
})
}
generateAnswerInput = () => {
const id = this.state.nAnswers
const answerInput = (
<div key={id}>
<input
type='text'
placeholder={`Answer #${id+1}`}
id={id}
value={this.state.answers[id]}
onChange={this.onAnswerChange}
disabled={this.state.disabled}
/>
<i
id='delete-button'
className="fa fa-window-close-o"
aria-hidden="true"
onClick={this.deleteAnswer}
></i>
</div>
)
this.setState( (prevState) => ({inputToRender: [...prevState.inputToRender, answerInput]}))
}
请原谅意大利面条代码。现在状态中的相应值确实发生了变化(答案数组),但它只记录一个字符。此外,输入不会更新以显示输入字段中的字符。非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
我改变了生成输入的方式并修复了问题。对于其他可能有类似设置的人,我很确定输入在输入时没有更新,因为输入本身存储在状态中。