实例https://snack.expo.dev/su1-U5DZc
如果我用按钮滑动屏幕 - 一切都好,但如果我用手势滑动 - 屏幕会显示两次。为什么这样?这是否 setWtf(state.index);
const onTouchStart = (e, state, context) => {
console.log('onTouchStart: ' + state.index);
setWtf(state.index);
};
使索引通过引用存储在某处然后进行更新?
是的,这是由于
setWtf(state.index);
。在其官方 git 页面中更新状态时,报告了渲染问题的错误。
他们说要将
react-native-swiper
降级到 1.5.5
版本
或者您可以遵循此处提到的其他解决方案:更新状态会破坏幻灯片
从“react-native-swiper”导入 Swiper;
这个解决了滑动时更新状态的问题。试试这个
如果没有更多信息,就不可能查明您遇到的问题的确切原因,尽管可以想象该问题与代码处理触摸事件的方式有关。
您的代码可能会根据在屏幕之间滑动时的手势调整
state.index
的值,然后根据state.index的值刷新屏幕显示。如果通过引用更新 state.index
,则屏幕显示可能会更新两次,因为该值被修改两次:一次通过手势,一次通过 setWtf
功能。
使用不同的变量来保存当前屏幕索引,并仅在用户与按钮交互时更新
state.index
的值是解决此问题的一种可能方法。这应该可以防止屏幕多次显示,并确保 state.index
的值仅被修改一次。
请务必记住,您在查询中指定的
setWtf
函数无法与您遇到的问题相关联。如果没有更多信息,很难确定此函数是否用于更新应用程序中的另一个状态。