У меня есть приложение, в котором динамические кнопки генерируются в соответствии с числом массивов состояний, при нажатии любой кнопки необходимо изменить цвет кнопки. Я пытался с setNativeProps, но всегда выдавал ошибку из-за не может прочитать setNativeProps неопределенного.
Мой код для этого был -
//map function
<TouchableWithoutFeedback key={index} ref=`btnAnswer_${id}`>
<View style={{
backgroundColor:questions[currentIndex].selectedAnswer[index]["option_"+index] === false ? 'transparent' : 'green',
padding:10,
width:100,
borderRadius:5
}}>
<Text>
//some text
</Text>
</View>
</TouchableWithoutFeedback>
И попытались получить доступ к кнопке, используя эти методы -
=> this.refs[`btnAnswer_${id}`].setNativeProps({style:{backgroundColor:'red'}}));
=> var btnRef = `btnAnswer_${id}`
this.btnRef.setNativeProps({style:{backgroundColor:'red'}}));
Но не удалось использовать описанные выше методы, поэтому я планировал поработать с состоянием и сделать это, мой объект состояния json был похож на это
questions= [
{
"question_id": 1,
"option_1": "true",
"option_2": "false",
sequence: [
2,
1
],
selectedAnswer: [
{
"option_1": false,
"option_2": false
}
]
},
{
"question_id": 2,
"option_1": "a",
"option_2": "b",
"option_3": "c",
sequence: [
3,
2,
1
],
selectedAnswer: [
{
"option_1": false,
"option_2": false,
"option_3":false
}
]
}
]
И манипулировали состоянием события нажатия кнопки, как это
onButtonPress(questionIndex,answerIndex){
var questionArray = this.state.questions;
questionArray[questionIndex].selectedAnswer[answerIndex]
["option_"+answerIndex] = true;
this.setState({questions:questionArray})
}
В идеале это должно обновить мое состояние и повторно отрендерить мой компонент и сделать мою кнопку цветной, как установлено, но компонент не перерисовывает
Пожалуйста, помогите.