【问题标题】:How to disable screen gestures using react-navigation@3.x如何使用 react-navigation@3.x 禁用屏幕手势
【发布时间】:2021-07-30 01:28:01
【问题描述】:

原来的问题

注意:这仅适用于 react-navigation@3.x

我们希望根据一些条件参数禁用特定屏幕的“滑动返回”功能。虽然在 StackNavigator 中实例化屏幕时很容易做到这一点,但我们很难找到任何有关如何动态处理此问题的文档或参考资料。

这还因为react-navigation 的版本为6.x 并且他们已多次重命名特定参数,而我们仍在使用版本3.x。希望这对某人有所帮助,因为我花费的时间比我承认的要长。

附加信息

react-navigation@6.x 中,他们将gesturesEnabled 重命名为gestureEnabled

【问题讨论】:

    标签: react-native react-navigation gesture


    【解决方案1】:

    禁用屏幕手势

    这是针对react-navigation@3.x 的,这里有几个选项(请注意,对于条件示例,参数名称可以是任何东西)。这是控制滑动返回功能的导航选项:

    gesturesEnabled: boolean // defaults to true
    

    功能组件(静态)

    MyScreen.navigationOptions = {
      gesturesEnabled: false
    }
    

    功能组件(条件)

    MyScreen.navigationOptions = ({ navigation }) => ({
       gesturesEnabled: navigation.getParam('myCondition', true) // second param is default value
    })
    

    类组件(静态)

    class MyScreen extends React.Component {
    
      static navigationOptions = {
        gesturesEnabled: false
      }
    
      render() {
        // ...
      }
    }
    

    类组件(条件)

    class MyScreen extends React.Component {
    
      static navigationOptions = ({ navigation }) => ({
        gesturesEnabled: navigation.getParam('isGestureEnabled', true),
      })
    
      disableScreenGestures() {
        this.props.navigation.setParams({ isGestureEnabled: false })
      }
    
      enableScreenGestures() {
        this.props.navigation.setParams({ isGestureEnabled: true })
      }
    
      render() {
        return (
          <Button onPress={() => this.disableScreenGestures()} />
        )
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2017-12-31
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多