小编pij*_*rik的帖子

React Native 中未触发 React Navigation 'beforeRemove' 事件

我试图阻止用户在 React Native 中录制视频时通过 Android 后退按钮或手势返回。根据React Navigation 的文档,它应该使用beforeRemove事件侦听器进行处理。但是返回时该事件永远不会被触发。

我尝试过blur,虽然它被解雇了,但由于此事件没有preventDefault()方法,因此在这种情况下无法使用。

反应导航 - v5.x

反应本机 - 0.63.2

这是我试图实现的屏幕的示例代码

const VideoCapturePage = ({navigation}) => {
  const [isRecording, setIsRecording] = useState(false);

  useEffect(() => {
    navigation.addListener('beforeRemove', (e) => {
      if (!isRecording) {
        return;
      }

      e.preventDefault();

      Alert.alert(
        'Unsaved changes',
        'There are unsaved changes. Please chose what you want.',
        [
          {
            text: 'Go back',
            onPress: () => {
              navigation.dispatch(e.data.action);
            },
          },
          {
            text: 'Cancel',
            onPress: () => {
              console.log('cancelled'); …
Run Code Online (Sandbox Code Playgroud)

android react-native react-navigation react-navigation-stack

5
推荐指数
1
解决办法
1920
查看次数