Reactjs 如何将拖动的视图绑定到ScrollView项中?
我用三个视图创建了Reactjs 如何将拖动的视图绑定到ScrollView项中?,reactjs,react-native,react-native-android,react-native-ios,Reactjs,React Native,React Native Android,React Native Ios,我用三个视图创建了ScrollView。我想在滚动视图中绑定拖动的视图,其余未拖放的视图应该在滚动视图之外进行维护。这怎么可能 查看GIF:我想在ScrollView中添加DragTableView 代码: import React,{Component}来自'React'; 进口{ 样式表, 看法 文本, 应答器, 有生气的 缓和,, 尺寸, 平台, 可触摸不透明度, 滚动视图, }从“反应本机”; 从“react native snap Carousel”导入转盘; 设圆_半径=36; le
ScrollView
。我想在滚动视图
中绑定拖动的视图,其余未拖放的视图应该在滚动视图
之外进行维护。这怎么可能
查看GIF:我想在ScrollView中添加DragTableView
代码:
import React,{Component}来自'React';
进口{
样式表,
看法
文本,
应答器,
有生气的
缓和,,
尺寸,
平台,
可触摸不透明度,
滚动视图,
}从“反应本机”;
从“react native snap Carousel”导入转盘;
设圆_半径=36;
let Window=Dimensions.get('Window');
const指令=Platform.select({
ios:'按Cmd+R重新加载,\n'+
“用于开发菜单的Cmd+D或shake”,
android:“双击键盘上的R以重新加载,\n”+
'为开发菜单摇动或按下菜单按钮',
});
导出默认类应用程序扩展组件{
建造师(道具){
超级(道具);
this.dataDrag=[1,2,3,4],
this.pan=this.dataDrag.map(()=>new Animated.ValueXY());
此.state={
showDraggable:是的,
DropZoneValue:null,
条目:['Apple1','Apple2','Apple3']
};
}
getPanResponder(索引){
返回PanResponder.create({
onStartShouldSetPanResponder:()=>true,
onPanResponderMove:Animated.event([null{
dx:this.pan[index].x,
dy:this.pan[index].y
}]),
onPanResponderRelease:(e,手势)=>{
如果(此.isDropZone(手势)){
这是我的国家({
showDraggable:false
});
}否则{
春天(
这个.潘[索引],,
{toValue:{x:0,y:0}
).start();
}
}
});
}
isDropZone(手势){
var dz=this.state.dropZoneValues;
返回sporter.moveY>dz.y&&sporter.moveY(
其基本思想是创建两个阵列,通过从一个结构中移除并复制到另一个结构来模拟移动效果
一步一步地:
创建两个数组
this.state={
dataDrag:[…this.dataDrag],
数据类型:[],
};
OnPanResponderRelease
,移动到新阵列
onPanResponderRelease:(e,手势)=>{
如果(此.isDropZone(手势)){
设idx=this.state.dataDrag.indexOf(index+1);
这是我的国家({
showDraggable:false,
dataDrag:[…this.state.dataDrag.slice(0,idx),…this.state.dataDrag.slice(idx+1,this.state.dataDrag.length-1)],
DataDrawed:[…this.state.DataDrawed,this.state.DataDraw[idx]],
});
}
创建两组动画。视图
,一个在ScollView
内部,一个在其外部
最终代码:
import React,{Component}来自'React';
进口{
样式表,
看法
文本,
应答器,
有生气的
缓和,,
尺寸,
平台,
可触摸不透明度,
滚动视图,
}从“反应本机”;
设圆_半径=36;
let Window=Dimensions.get('Window');
导出类应用程序扩展组件{
建造师(道具){
超级(道具);
this.dataDrag=[1,2,3,4],
this.pan=this.dataDrag.map(()=>new Animated.ValueXY());
此.state={
showDraggable:是的,
DropZoneValue:null,
条目:['Apple1','Apple2','Apple3'],
dataDrag:[…this.dataDrag],
数据类型:[],
};
}
getPanResponder(索引){
返回PanResponder.create({
onStartShouldSetPanResponder:()=>{
返回true;
},
onPanResponderMove:Animated.event([null{
dx:this.pan[index].x,
dy:this.pan[index].y
}]),
onPanResponderRelease:(e,手势)=>{
如果(此.isDropZone(手势)){
设idx=this.state.dataDrag.indexOf(index+1);
这是我的国家({
showDraggable:false,
dataDrag:[…this.state.dataDrag.slice(0,idx),…this.state.dataDrag.slice(idx+1,this.state.dataDrag.length-1)],
DataDrawed:[…this.state.DataDrawed,this.state.DataDraw[idx]],
});
}否则{
春天(
这个.潘[索引],,
{toValue:{x:0,y:0}
).start();
}
}
});
}
isDropZone(手势){
var dz=this.state.dropZoneValues;
返回sporter.moveY>dz.y&&sporter.moveY(
是的,但只有一个拖动视图添加到ScrollView中。假设我拖动View3并添加到ScrollView中,那么只有这个视图绑定到scroll中。其他剩余视图在ScrollView之外。@KiritModi我为您创建了一个新视图,但只有一个视图可以添加draggedView。我将它放回另一个视图中。在第一个视图中可以添加拖动视图。但第二个视图是v无法添加视图。我认为这是错误的