react-native - 包含在屏幕反应原生中的模态
问题描述
我正在使用react-navigation和react-native-modal。
当我打开屏幕 1 时,我有一个打开模式的按钮。在此模式中,有一个导航按钮可以导航到屏幕 2。
这有效,但模态不会被解雇。然后导航动作发生在模态后面(我可以通过背景看到动画)。我想导航到modal 顶部的屏幕 2 ,当我向后导航 ( navigation.goBack()
) 时,我希望看到 modal 仍然在屏幕 1 上打开。
我猜它与屏幕堆栈有关。有什么我想念的吗?
屏幕 1 和 2:
import React from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import Modal from 'react-native-modal';
import { useNavigation } from '@react-navigation/native';
export default Screen1 = (props) => {
const { navigate, goBack } = useNavigation();
const [modal, setModal] = useState(false);
return (
<View>
<Text>Screen1</Text>
<TouchableOpacity onPress={() => setModal(true)}>
<Text>Open modal</Text>
</TouchableOpacity>
<Modal visible={modal}>
<View>
<TouchableOpacity onPress={() => navigate('Screen2')}>
<Text>Go to screen 2</Text>
</TouchableOpacity>
</View>
</Modal>
</View>
);
};
export default Screen2 = (props) => {
const { navigate, goBack } = useNavigation();
return (
<View>
<Text>Screen2</Text>
<TouchableOpacity onPress={goBack}>
<Text>Back to screen 1</Text>
</TouchableOpacity>
</View>
);
};
解决方案
react-native-modal将始终呈现在您的导航顶部,因为它有一个单独的活动,并且该活动将始终呈现在主要活动的顶部,您必须关闭模式才能看到后面的主要活动,如果您想要返回前一个屏幕的状态时,您必须使用react-navigation-modal这将是您的导航器的一部分,并将保持您的状态。
推荐阅读
- python - 当应用程序作为参数传递时,每次重新加载页面时如何在 Python Dash 中重新加载布局?
- javascript - 为什么出现垂直滚动条时html5画布不是全屏
- python-3.x - 我无法让我的代码的第四部分在 python 中工作
- kubernetes - K8S pod 中的 DNS:tcpdump 显示错误的 udp 校验和,但 nslookup 仍然有效且 UDP 错误计数器不增加
- sql - 为其他模式的物化视图调用 DBMS_MVIEW.REFRESH 的特权
- kubernetes - K8S 持久卷更改是否与 --record 标志一起使用
- excel - 运行脚本出错 - “文档
我正在运行一个脚本来提取附加到电子邮件的每周计划 excel 文件并将其发布到谷歌表格。目前我正在手动触发它。该代码似乎工作正常并根据记录器语句完成,但每次都会给出此错误代码
- c++ - 如何实现具有两个或更多键的哈希函数?
- python - 电子表格api如何在有数据的列时指定范围
- python - 使用 C 和 python 之间的管道进行进程间通信 - 仅打印换行符