react-native - 如何根据从 API 获取的数据在 React Navigation 中创建或删除选项卡?
问题描述
假设有一个选项卡视图,其中包含名称为面包、比萨饼、饮料、甜点、奶昔的选项卡。这些选项卡的名称是从 API 中获取的。此外,每个选项卡在各自屏幕上显示的信息也是从 API 中获取的。现在,当 Tab 的数据之一从 API 中删除时。我也希望将其从选项卡视图中删除。
如何在 React Navigation 中实现这一点?
解决方案
在反应导航中,我们不能有动态选项卡,因为我们必须提前静态定义好所有路由。
我们也有这样的要求,所以我们遵循了下面提到的方法。
- 静态定义所有可能的选项卡并使选项卡不可见。
const MainNav = createBottomTabNavigator( { Breads: { screen: BreadsStackNavigation }, Pizzas: { screen: PizzasStackNavigation }, Beverages: { screen: BeveragesStackNavigation }, Desserts: { screen: DessertsStackNavigation }, Shakes: { screen: ShakesStackNavigation } }, { initialRouteName: 'HomeStackNavigation', defaultNavigationOptions: { tabBarVisible: false, }, swipeEnabled: false, navigationOptions: { header: props => <HeaderView navigation={props.navigation} />, tabBarVisible: false } } );
- 在 HeaderView 中,
componentWillReceiveProps
检查来自服务器的响应并相应地动态创建选项卡(可能是通过根据响应动态添加按钮)。
更新
我正在考虑另一种方法。
正如此链接中给出的,我们可以创建自己的自定义导航器,并在从 API 调用获得响应后动态填充父自定义导航器中的选项卡。我没有相同的确切代码,但您可以尝试这种方法。
推荐阅读
- selenium-chromedriver - npm install chromedriver 不工作。当前现有的 ChromeDriver 二进制文件不可用
- c# - 如何使用 ADO.NET 将多行插入 SQL Server?
- java - 如何在没有android的情况下移动像圆周运动这样的视图?
- laravel - vim : 术语“vim”不被识别为 cmdlet 的名称?
- jquery - 在准备好的文档中显示页面
- python - 在 PostgreSQL 中匹配相似的长字符串并让它告诉我它们有多相似
- swift - 快速的问题,如何在 00:00 停止我的计时器而不是负数
- bash - 加载 Docker 容器后运行 Bash 脚本
- javascript - 如何获取其他页面的完整代码并放入文本区域
- python - 如何在 Pycharm 中向下/向上移动方法?