<div className = "questions" id = "questions">
{Array(this.state.numQuestions).fill().map((number, questionIdx) => {
return (
<div>
<label>Question</label>
<input type = "text" onChange = {this.handleQuestionChange.bind(questionIdx)} />
</div>);
Array(4).fill().map((number, index) => {
return <input type = "text" key = {index} onChange = {this.handleAnswerChange.bind(questionIdx)} />
})}
)
})}
</div>
Я получаю странную ошибку для строки <input type = "text" onChange = {this.handleQuestionChange.bind(questionIdx)} />
Я не совсем уверен, что означает ошибка, не говоря уже о том, как ее исправить, вот информация об ошибке:
TypeError: Cannot read property 'bind' of undefined
Спасибо!
Я просто случайно ошибся, теперь все хорошо, в любом случае спасибо!
Чтобы использовать bind, первым параметром должен быть this, но эта ошибка означает, что функция не определена. должно быть как this.handleQuestionChange.bind(this, questionIdx)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это означает, что this.handleQuestionChange не определен, поэтому вы не можете вызывать bind() (или что-то еще) на нем.
Проверьте свой объект / функции и убедитесь, что он существует.
ой хорошо, сделаю!
Лол, у меня функция написана неправильно. Теперь все хорошо, спасибо!
Я предпочитаю стрелочную функцию, она более элегантная. Просто определите это как:
const handleAnswerChange = (index) => {
// do anything you like
console.info(index)
}Тогда вам не нужно связывать свою функцию. Это уже сработало.
У вас есть метод
handleQuestionChange()в вашем классе компонентов?