javascript - react native : How to render check box inside flatlist

标签 javascript react-native

我在平面列表中创建了一个复选框,但是当我单击该复选框时,所有复选框都会呈现。我想渲染我按下的复选框而不是整个复选框。

这是我的代码:

const list = [
  {
    name: 'Kevin',
    id:0
  },
  {
    name: 'John',
    id:1
  },
]
export default class TestingScreen extends Component {
  constructor(props) {
    super(props)
    this.state = {
      checked: false
    }
  }

  handleCheckBox = () => this.setState({ checked: !this.state.checked })

  renderItem = ({ item }) => (
    <ListItem
      title={<View><Text>{item.name}</Text></View>}r
      leftAvatar={
        <View>
        <Image
                  style={{width:50, height:50,borderRadius:25 }}
                  source={require('../Components/Assets/oval.png')} />
        </View>
      }
      rightAvatar={
        <CheckBox
          checked={this.state.checked}
          onPress={() => this.setState({checked: !this.state.checked})}
        />
      }
    >
    </ListItem>

  )

  render() {
  return(
    <View style={styles.container}>
    <FlatList
         keyExtractor={this.keyExtractor}
         data={list}
         renderItem={this.renderItem}
         extraData={this.state}
       />
      </View>
    )
  };
}

有没有办法可以渲染我按下的复选框? 任何评论或建议都会非常有帮助,谢谢! :)

最佳答案

您对所有复选框使用相同的状态变量。单击其中一个复选框将更新您为所有复选框指定的单个全局变量 checked

您必须创建一个具有自己状态的复选框组件,或者更新用于呈现不同项目的列表内的变量。

例如:

1)将列表变量移动到添加选中键的状态内:

const list = [
  {
    name: 'Kevin',
    id:0,
    checked:false
  },
  {
    name: 'John',
    id:1,
    checked:false
  },
] 



 this.state = {
  list: list
}

2)使用状态到flatList数据中:

<FlatList
     keyExtractor={this.keyExtractor}
     data={this.state.list}
     renderItem={this.renderItem}
     extraData={this.state}
/>

3)更改checkBox的onPress:

<CheckBox
      checked={this.state.list[item.id].checked}
      onPress={() => this.checkThisBox(item.id)}
    />

地点:

checkThisBox=(itemID)=>{
   let list=this.state.list
   list[itemID].checked=!list[itemID].checked
   this.setState({list:list})
}

关于javascript - react native : How to render check box inside flatlist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56983506/

相关文章:

javascript - 使用 forEach 过滤 JSON 对象

react-native - 当应用程序从后台返回时卡在 Android 启动画面上

reactjs - 如何在 react-native 中正确输入 measureLayout

javascript - 在 React Native 中哪里调用 addListener

javascript - 提交时截取表单

javascript - 如何在 html 中查找运算符值,将其设置为 var 并在 javascript 函数中使用它?

Javascript对象文字,如何解决上下文?

javascript - 未通过 axios post 请求接收 Set-Cookie header

javascript - 使用下拉列表填充 HTML 页面

javascript - 如何在 Metro Bundler 的 metro.config.js 中附加扩展名?