EDIT:
Мой оригинальный ответ ниже похож на то, что у вас есть. Так что просто отредактируйте ваш метод onPress следующим образом:
onPress = {(e)=>this.props.onAnswer(currentQuestion, questions[currentQuestion].options[0])}
и ваш onAnswer сможет принимать ответы пользователей на вопросы:
onAnswer(question, usersAnswer) {
..
}
render() { ... }
**
В основном, реагирующие компоненты должны управляться данными или состояниями и реквизитом (вы не хотите работать с логикой, полагаясь на элементы DOM с чистым JS или JQuery).
Для этого вам нужен реакционный раствор, как показано ниже:
...
state = {
data: [{
id: 1,
name: 'Anna'
},
{
id: 2,
name: 'John'
},
{
id: 3,
name: 'James'
},
{
id: 4,
name: 'John'
}]
}
onPersonPress(person) {
console.log("e is ", person);
}
render() {
const { data = [] } = this.state;
return (
<View>
{data.map(person => {
return (<TouchableOpacity onPress={(e) => this.onPersonPress(person)}>
<View><Text>Click Me - {person.name}</Text></View>
</TouchableOpacity>)
})}
</View>
)
}
...
Причина, по которой этот способ решения этой проблемы является наиболее распространенным, заключается в его гибкости и, возможно, наиболее логичном. При этом вы можете использовать идентификатор (id) или любое поле вместо того, чтобы принудительно указывать на то, что Text отображает «innerText», который не всегда уникален (в моем случае есть еще один Джон)
P.S .: Другим не нравится эта реализация из-за соображений производительности onPress={(e) => this.onPersonPress(person)}
, поэтому есть другие способы добиться того же.