【问题标题】:How to render checkbox on the <Image> (React Native)如何在 <Image> 上渲染复选框(React Native)
【发布时间】:2026-02-12 01:45:02
【问题描述】:

我想在图像上添加复选框。这是当前屏幕。

很简单FlatList。这是 FlatList 的renderItem()

   <TouchableWithoutFeedback
      onPress={() => this._handleImagePress(item.id)}>
      <Image
        key={item.id}
        source={{uri: item.outfit_img}}
        style={styles.rowImage}
        resizeMode="cover"
      />
    </TouchableWithoutFeedback>

我想要实现的就像下面这个屏幕

我有 &lt;CheckBox on={true}&gt; 组件来呈现 选中 复选框。

请求

handleImagePress = (id) => {
    if(_.includes(this.state.selectedIds, id)) {
        let newSelectedIds = _.filter(this.state.selectedIds, (curObject) => {
            return curObject !== id;
        });
        this.setState({selectedIds : newSelectedIds});
      } else {
        let newSelectedIds = [...this.state.selectedIds, id];
        this.setState({selectedIds : newSelectedIds});
      }
}

【问题讨论】:

  • 我用谷歌搜索了这个问题一个小时 :(

标签: javascript css reactjs react-native


【解决方案1】:

您只需要在您的renderItem() 中执行此操作:

renderItem({item}) => {
 const isSelected = this.state.selectedIds.includes(item.id)
 return (
    <TouchableWithoutFeedback
      onPress={() => this._handleImagePress(item.id)}
    >
       <Image
         key={item.id}
         source={{uri: item.outfit_img}}
         style={styles.rowImage}
         resizeMode="cover"
       />
       { isSelected && <CheckBox on={true}> }
    </TouchableWithoutFeedback>
 )
}

这里Checkbox应该有absolute定位,你可以提供你想要的样式。此外,您需要将值为 this.state.selectedphotosextraData 属性添加到您的平面列表中。

【讨论】:

  • 是的,我认为我应该回答,但正如预期的那样,您正在将 id 添加到数组中。你把它命名为selectedIds
  • 你的意思是我需要把 style={{absolute:true, x, y}}??
  • style={{position:'absolute'}} 这会将复选框放置在图像的左上角。您可以相应地添加边距以将其放置在右上角。
  • 不错。我接受了你的回答,但你可能想用样式编辑它以供进一步投票:P 谢谢
  • @JohnBaek 你可以为你的复选框组件提供代码吗?