如何在React Navigation中动态禁用gestureEnabled?

Kev*_*vvv 5 scrollview ios react-native react-navigation

我目前正在使用 React Navigation 5.x,并且我有一个向下滑动以关闭的模式,并且它已经在ScrollView上面了。问题是,由于可以通过向下手势滚动内容,因此模式有时会意外关闭。所以我想动态禁用gestureEnabled为 false 直到onScrollToTop指示ScrollView已到达顶部。

<Main.Navigator
    tabBarPosition="none"
    initialRouteName="Main"
    screenOptions={{
        headerShown: false,
        gestureEnabled: true,
        gestureResponseDistance: {
            horizontal: width,
            vertical: height,
        },
    }}
    mode="modal"
    headerMode="none"
>
 // screens
</Main.Navigator>
Run Code Online (Sandbox Code Playgroud)

如何传递道具以动态screenOptions禁用gestureEnabled?或者有更好的方法来解决这个问题吗?

小智 0

如何将 props 传递给 screenOptions 以动态禁用gestureEnabled?

使用 React Navigation(在 v6 中测试),您可以使用navigationprop 动态启用或禁用屏幕上的手势。

navigation.setOptions({ gestureEnabled: false })
Run Code Online (Sandbox Code Playgroud)

请参阅React Native Screen 提供的示例。