У меня есть следующий код, и по какой-то причине флажок не обновляется, когда я нажимаю на них. Кто-нибудь знает, в чем может быть проблема? Я использую CheckBox из react-native-elements. Проверяемое свойство зависит от того, существует ли значение в наборе. Функция onpress обновляет переменную состояния, и я могу получить правильные значения из переменной состояния. Спасибо!
constructor(props) {
super(props);
this.state = {
interests: new Set(),
brands: new Set(),
medicalCondition: new Set(),
errorMessage: '',
loading: false
}
}
onPressHandler = (event, value, keyName) => {
let tempCheckedValues = new Set(this.state[keyName]);
tempCheckedValues.has(value) ? tempCheckedValues.delete(value) : tempCheckedValues.add(value);
console.info(tempCheckedValues);
this.setState({[keyName] : tempCheckedValues});
}
renderCheckboxGroup = (checkboxList, keyName) => {
return checkboxList.map((value, index) => {
return (
<CheckBox
key = {index}
title = {value}
onPress = {(event) => this.onPressHandler(event, value, keyName)}
checked = {this.state[keyName].has(value.toLowerCase())}
/>
)
})
}
render() {
const interestsConst = ["Tennis", "Golf", "Shopping", "Movie", "Hiking", "Reading", "Diving", "Investing"];
const brandsConst = ["Chanel", "Louis Vuitton", "H&M", "ZARA", "Hermes", "Gucci", "Cartier", "Burberry", "Nike", "Adidas", "Lululemon", "Athleta"];
const medicalConditionConst = ["Hypertension", "Hyperlipidemia", "Diabetes", "Back pain", "Anxiety", "Asthma", "Cancer", "Depression", "Shingles"];
return (
<View style = {styles.container}>
<ScrollView>
<View style = {styles.cardGroup}>
<Card title='Interests'>
{this.renderCheckboxGroup(interestsConst, 'interests')}
</Card>
</View>
<View style = {styles.cardGroup}>
<Card title='Brands'>
{this.renderCheckboxGroup(brandsConst, 'brands')}
</Card>
</View>
<View style = {styles.cardGroup}>
<Card title='Medical Conditions'>
{this.renderCheckboxGroup(medicalConditionConst, 'medicalCondition')}
</Card>
</View>
</ScrollView>
</View>
)
}
}
Я создал закуску (snake.expo.io/@billtlee/checkbox-test). Я могу получить правильные значения из console.info. Спасибо!





попробуйте создать закуску (snake.expo.io), чтобы люди могли ее протестировать, прямо сейчас ваш console.info возвращает пустой объект, как и ваши состояния.