Как поместить массив в флажок и щелкнуть по нему в соответствии с идентификатором массива реагировать родной? - PullRequest
0 голосов
/ 22 мая 2019

Когда я нажимаю 1 флажок, флажок все значения тоже отмечены, тогда мой вопрос, как разделить его в соответствии со значением массива?

enter image description here

render () {
    const { data } = this.props
    const { checked, statusChecked, unhide } = this.state

    const checkBoxCourier = data.map((item, index) => {
      return (
        <Card key={index} style={globalStyle.padDefault}>
          <Item>
            <Text>
              {'[LOGO] '}
            </Text>
            <Text style={styles.bold}>{item.courier_name.toUpperCase()}</Text>
          </Item>
          {
            item.services.map((item2, index) => (
              <ListItem
                key={index}
              >
                <CheckBox
                  checked={checked}
                  onPress={() => this.onCheckBoxPress(item2.courier_service_id, item2.status)}
                />
                <View style={styles.row}>
                  <Body>
                    <Text style={styles.textStyle}>{item2.service_name}</Text>
                    <Text style={styles.textStyle}>{item2.service_description}</Text>
                  </Body>
                </View>
              </ListItem>
            ))
          }
        </Card>
      )
    })

    return (
      <Container>
        <ScrollView>
          {checkBoxCourier}
        </ScrollView>
      </Container>
    )

Ответы [ 2 ]

1 голос
/ 22 мая 2019

вы так делаете

checked={index+item2.courier_service_id == this.state.Selected ? checked :uncheck}
          onPress={() => this.onCheckBoxPress(item2,index)}
        />

и в onCheckBoxPress

  onCheckBoxPress(){
   this.setState({Selected:index+item2.courier_service_id})
    }

Я надеюсь, что это поможет вам

0 голосов
/ 22 мая 2019

Вам необходимо передать флажок, который относится к элементу службы, а не к компоненту, что-то вроде этого:

render(){
    const {data} = this.props
    const {checked, statusChecked, unhide} = this.state

    const checkBoxCourier = data.map((item, index) => {
        return (
            <Card key={index} style={globalStyle.padDefault}>
                <Item>
                    <Text>
                        {'[LOGO] '}
                    </Text>
                    <Text style={styles.bold}>{item.courier_name.toUpperCase()}</Text>
                </Item>
                {
                    item.services.map((item2, index) => (
                        <ListItem
                            key={index}
                        >
                            <CheckBox
                                checked={item2.isChecked} // Save the value here
                                onPress={() => this.onCheckBoxPress(item2.courier_service_id, item2.status)}
                            />
                            <View style={styles.row}>
                                <Body>
                                <Text style={styles.textStyle}>{item2.service_name}</Text>
                                <Text style={styles.textStyle}>{item2.service_description}</Text>
                                </Body>
                            </View>
                        </ListItem>
                    ))
                }
            </Card>
        )
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...