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