gpt4 book ai didi

android - React Navigation 'beforeRemove' 事件未在 React Native 中触发

转载 作者:行者123 更新时间:2023-12-03 17:23:46 26 4
gpt4 key购买 nike

我试图阻止用户在 React Native 中录制视频时通过 Android 后退按钮或手势返回。根据 documentation对于 React Navigation,应该使用 beforeRemove 处理事件监听器。但是返回时该事件永远不会被触发。
我试过 blur ,虽然它被解雇了,但由于这个事件没有 preventDefault()方法,在这种情况下不可用。
react 导航 - v5.x
react native - 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');
},
},
{
text: 'Continue to Edit',
onPress: () => {
console.log('continue');
},
},
],
{
cancelable: false,
},
);
});
}, [navigation, isRecording]);

return (
<View style={styles.container}>
<VideoCamera
isRecording={isRecording}
setIsRecording={setIsRecording}
/>
</View>
);
};

最佳答案

根据您不在选项卡/抽屉导航中使用的文档。您仅使用 Modal 和其他区域。
“请注意,只有在移除屏幕时才会触发此事件。例如:
用户按下堆栈中屏幕上的后退按钮
用户执行了向后滑动手势
调度了诸如 pop 或 reset 之类的某些操作,从而将屏幕从状态中移除
当屏幕未聚焦但未移除时,不会触发此事件。例如:
用户在屏幕顶部推送了一个新屏幕,监听器在堆栈中
用户从一个选项卡/抽屉屏幕导航到另一个选项卡/抽屉屏幕”

关于android - React Navigation 'beforeRemove' 事件未在 React Native 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63364030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com