我在 React Native 中有一个表格,它实际上只是一堆样式化的View
元素,如下所示:
我想设置它,以便用户可以在任何空框上点击手指并拖动手指以突出显示这些框。
我已经使用mousedown
/ mouseover
/mouseup
在桌面和touchstart
/ touchmove
/touchend
移动浏览器上为组件的Web 版本设置了类似的东西,但是我在React Native 中创建相同的效果时遇到了麻烦。
在进行了一些搜索之后,我遇到了一个名为PanResponder
( https://reactnative.dev/docs/panresponder ) 的东西,我怀疑如果设置正确会得到我想要的东西。但是,文档并没有详细解释各种平底锅处理程序的工作原理。
按照文档中的示例,我编写了以下起始代码:
const panResponder = PanResponder.create({
onStartShouldSetPanResponder: (evt, gestureState) => true,
onStartShouldSetPanResponderCapture: (evt, gestureState) => true,
onMoveShouldSetPanResponder: (evt, gestureState) => true,
onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,
onPanResponderGrant: (evt, gestureState) => {
console.log('onPanResponderGrant gestureState');
// console.log('onPanResponderGrant gestureState', gestureState);
},
onPanResponderMove: (evt, gestureState) => {
console.log('onPanResponderMove gestureState');
// console.log('onPanResponderMove gestureState', gestureState);
},
onPanResponderTerminationRequest: (evt, gestureState) => true,
onPanResponderRelease: (evt, gestureState) => {
console.log('onPanResponderRelease');
},
onPanResponderTerminate: (evt, gestureState) => {
console.log('onPanResponderTerminate');
},
onShouldBlockNativeResponder: (evt, gestureState) => {
return true;
}
});
这样,当我点击特定框并在该框内移动时,我可以触发事件。但是,只要我将手指移到下一个框,onPanResponderTerminate
事件就会触发,并且我不会触发任何其他事件。
我的问题是:PanResponder
用于我想要完成的任务是否正确?如果是这样,我需要如何更改它以获得我想要的?如果没有,我应该改用什么?谢谢你。