pij*_*rik 5 android react-native react-navigation react-navigation-stack
我试图阻止用户在 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');
},
},
{
text: 'Continue to Edit',
onPress: () => {
console.log('continue');
},
},
],
{
cancelable: false,
},
);
});
}, [navigation, isRecording]);
return (
<View style={styles.container}>
<VideoCamera
isRecording={isRecording}
setIsRecording={setIsRecording}
/>
</View>
);
};
Run Code Online (Sandbox Code Playgroud)
根据您在选项卡/抽屉导航中不使用的文档。您仅使用模态和其他区域。“请注意,只有当屏幕被移除时才会触发此事件。例如:
用户在堆栈中的屏幕上按下后退按钮 用户执行了向后滑动手势 调度了某些操作(例如弹出或重置),该操作将屏幕从状态中删除 当屏幕未聚焦但未删除时,不会触发此事件。例如:
用户将一个新屏幕推到屏幕顶部,侦听器位于堆栈中用户从一个选项卡/抽屉式屏幕导航到另一个选项卡/抽屉式屏幕”
| 归档时间: |
|
| 查看次数: |
1920 次 |
| 最近记录: |