Значение обновления флажка response-native-elements

У меня есть следующий код, и по какой-то причине флажок не обновляется, когда я нажимаю на них. Кто-нибудь знает, в чем может быть проблема? Я использую 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), чтобы люди могли ее протестировать, прямо сейчас ваш console.info возвращает пустой объект, как и ваши состояния.

slashsharp 14.08.2018 10:02

Я создал закуску (snake.expo.io/@billtlee/checkbox-test). Я могу получить правильные значения из console.info. Спасибо!

Bill 14.08.2018 14:15
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
2
480
0

Другие вопросы по теме