Я использовал флажок во вложенном массиве.Его флажок onclick Логическое значение изменено на true false, но мой флажок не отмечен и не отмечен.
Вот код для флажка, используемого в scrollView ....
<ScrollView
scrollEventThrottle={16}
style={{ backgroundColor: '#e7e7e7', }}>
{this.state.ExampleQuestions.map((item, index) => {
return (
<View style={{ padding: 5 }}>
<Card style={{
flexDirection: 'column',
backgroundColor: 'white',
padding: 10
}}>
<View style={styles.oval}>
<Text numberOfLines={10} style={styles.welcome}>
({index + 1})- {item.question_description.toString().replace(/<\/?[^>]+(>|$)/g, "")}
</Text>
</View>
{item.question_type == 2 &&
item.answers.map((itemtwo, indextwo) => {
itemtwo.status = ""
console.log('status', itemtwo.status)
return (
<View style={{
flex: 1,
flexDirection: 'row',
backgroundColor: 'white',
alignItems: 'center', margin: 5, padding: 8,
elevation: 1, borderRadius: 5, borderWidth: 0.7,
borderColor: '#C9C9C9',
}}>
<View style={{ flex: 0.15, flexDirection: 'column' }}>
<CheckBox checked={itemtwo.status}
onPress={() => {
itemtwo.status!=itemtwo.status
this.CheckBox(item, itemtwo, index, indextwo)
console.log("render status", itemtwo.status)
}} />
</View>
<View style={{ flex: 1, justifyContent: 'center', flexDirection: 'column', }}>
<Text numberOfLines={10} style={{
fontSize: 15, paddingEnd: 5,
fontWeight: '500', textAlign: 'left',
fontFamily: Platform.OS === 'ios' ? Fonts.SanFranciscoDisplay_Medium : 'roboto_medium',
color: "black"
}}>{itemtwo.answer_options.toString().replace(/<\/?[^>]+(>|$)/g, "")}</Text>
</View>
</View>
)
})
}
Флажок отмечени непроверенная функция выглядит следующим образом ..
CheckBox(item, itemtwo, index, indextwo) {
console.log(item, itemtwo, index, indextwo)
console.log(itemtwo.status)
item.answers.map((itemnew,indexnew)=>{
if(itemnew.answer_options==itemtwo.answer_options){
itemtwo.status = !itemtwo.status
if(itemtwo.status==true){
const answerValue=this.state.ExampleQuestions[index].answers[indexnew].answer_options
this.state.ExampleQuestions[index].answers.find(v => v.answer_options == answerValue).status = true
console.log('selected:' , itemtwo.status + itemtwo.answer_options)
return itemtwo.status
}
else if (itemtwo.status==""){
const answerValue=this.state.ExampleQuestions[index].answers[indexnew].answer_options
this.state.ExampleQuestions[index].answers.find(v => v.answer_options == answerValue).status = ""
console.log('unselected:' ,itemtwo.status + itemtwo.answer_options)
return itemtwo.status
}
}
})
console.log('Final array checked', this.state.ExampleQuestions)
}
Мой массив находится здесь:
(5) […]
0: {…}
answers: (4) […]
0: Object { answer_options: "4", is_answer: true, status: "" }
1: Object { answer_options: "5", is_answer: "", status: true }
2: Object { answer_options: "6", is_answer: "", status: true }
3: Object { answer_options: "7", is_answer: true, status: true }
length: 4
<prototype>: Array []
marks: 2
q_id: 209
question_description: "<p>WHAT IS THE ANSWER OF 2+2?</p>\n"
question_type: 2
Ниже приводится массив данных.Я хочу установить и снять флажок, используя внутреннее значение массива с именем Status.
Его значение изменяется при щелчке, но флажок не отмечен и не отмечен.есть ли решение?