react-native - 反应原生选择多个项目,如画廊
问题描述
我们都在手机中使用一些图库应用程序。在图库中尝试删除照片时,我们可以通过滑动手指来选择多张图像。
我不知道这个的关键字,我搜索但找不到事件或处理程序。我真的想在我的应用程序上使用它来选择多个组件列表项。
什么是关键字以及如何实现它。有人帮忙吗?
这是我做的
constructor(props) {
super(props);
const panResponder = PanResponder.create({
onStartShouldSetPanResponder: (evt, gestureState) => true,
onStartShouldSetPanResponderCapture: (evt, gestureState) => true,
onMoveShouldSetPanResponder: (evt, gestureState) => true,
onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,
onPanResponderMove: (event, gesture) => {
console.log('do',gesture);
}
});
使成为
{this.state.hours.map((hours, index) => {
return (
<View
style={{
backgroundColor: 'red',
}}
{...this.state.panResponder.panHandlers}>
<TouchableOpacity
style={{backgroundColor: 'blue'}}
onPress={() => {
this.hoursSelect(hours, index);
}}>
<hoursComponent
hoursText={hours.hoursText}
isSelected={hours.isSelected}
hours={hours}
pushSecilihours={this.pushhours}
/>
</TouchableOpacity>
</View>
);
})}
无法获得触动的价值
这是我需要做的。滑动或触摸组件并获取值。谢谢你。
我可以获得 xy 坐标值,但如何使用它。
解决方案
您可以使用该onLayout
方法获取元素的偏移量,然后用于PanResponder
检测 PanResponder GestureState,然后比较当前元素的 offSet 和 GestureState 值,如果匹配则标记为选中。
为了在滑动元素时存储所选项目,您需要创建 2 个状态,比如说:selectedElements
和gestureSelectionList
selectedElements
存储当前选择的项目。gestureSelectionList
在滑动元素时跟踪手势触摸元素。- 一旦触摸手势被释放,您需要将
gestureSelectionList
元素推送到selectedElements
然后清除gestureSelectionList,以便我们可以再次存储新元素并在下一个手势状态下重复该过程。
抱歉,如果我无法清楚地解释它。你可以在我完成的地方查看我的 GitHub 存储库:https ://github.com/sushantdsuwal/DragAndSelectMultipleItems
推荐阅读
- angular - 如何设置角度形式的验证器,如果它已经具有无效值,则检测到错误
- excel - VBA从XL复制范围并在PPT中粘贴“仅保留文本”
- javascript - 如何使图像适合 React/Bootstrap 中的页面?
- sql - SQL获取最接近数字的值
- mysql - Posgresql vs Mysql 用于基于 SqlAlchemy 的 RESTful API?
- vmware-clarity - Datagrid 排序号 - 最后希望为空
- .net-core - 看不到来自外部程序集的 Xml 注释
- xcode - Xcode 11 发布日期
- php - for循环中的索引不返回最后一个索引
- node.js - Jest automatic-mocks:有趣的示例结果