【问题标题】:Configuring React Navigation on web: hiding bottom tab bar based on platform在 Web 上配置 React Navigation:基于平台隐藏底部标签栏
【发布时间】:2021-09-14 07:48:49
【问题描述】:

寻找有关将 React Navigation 用于 Web 的最佳实践的一般建议。例如,我想将底部标签(在本机中)移动到顶部(在网络上)?这样做的好方法是什么?有没有办法根据平台隐藏/显示/更改导航?

【问题讨论】:

标签: javascript reactjs react-native react-navigation


【解决方案1】:

结果比我想象的要容易。谢谢@Drew Reese

如果以下是您的根导航器,例如 -:

function RootNavigator() {

  return (
    <Stack.Navigator>
        <Stack.Screen name="authNav" component={AuthNavigator} />
        <Stack.Screen name="main" component={MainNavigator} />
    </Stack.Navigator>
  );
}

如果您希望您的网络应用程序将主导航器加载为侧边栏,并让您的本地应用程序将主导航器加载为底部导航器,例如,在 MainNavigator.native.js 和侧边栏创建底部选项卡导航器(抽屉类型设置为永久的抽屉导航器)在MainNavigator.js.

即使导入保持不变。高效!

import MainNavigator from './MainNavigator'

【讨论】:

  • 总是乐于提供帮助。干杯。
【解决方案2】:

您至少可以通过两种不同的方式来实现这一点,但我认为更好的方式是使用媒体查询。

媒体查询

一种方法是使用Media Queries,您基本上可以在其中检查screen 的大小。

您可以有条件地渲染当前屏幕尺寸在特定范围内,或者小于或大于特定尺寸。

这是Guide to Media Queries from CSS Tricks

对于某些尺寸,我将缩写为xssmmdlgxlextra-smallsmallmediumlarge、@9876 )。

在你的场景中

所以基本上,您可以渲染选项卡(或任何 UI 元素,真的)或隐藏它们,或有条件地应用 css。

用户代理

另一种方法是使用User Agent

您可以检查特定于平台的字符串,例如AndroidiPhoneiPadMacintosh 等。

const { userAgent } = window.navigator

console.log(userAgent)

【讨论】:

  • 谢谢@bilo-io。这可能有效,但效率不高,因为我是从一个没有 css 的全功能原生 react-native 应用开始的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多