首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据数组id react native将数组放入复选框并单击它?

如何根据数组id react native将数组放入复选框并单击它?
EN

Stack Overflow用户
提问于 2019-05-22 14:23:21
回答 2查看 53关注 0票数 0

当我点击1个复选框时,所有的值复选框也被选中,那么我的问题是如何根据数组的值来分隔它?

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>
    )
EN

回答 2

Stack Overflow用户

发布于 2019-05-22 15:11:18

你是这样做的

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})
    }

我希望这能对你有所帮助

票数 1
EN

Stack Overflow用户

发布于 2019-05-22 15:09:11

您需要向特定于服务项目而不是组件的复选框传递一个标志,如下所示:

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>
        )
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56250498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档