javascript - 使用 DrawerNavigator [React native] 导航到 URL/Deep Link

标签 javascript react-native navigation navigation-drawer side-menu

我们如何从导航器条目中打开链接?例如,像:

 const Home = DrawerNavigator ({
     Account: { screen: Account },
     Availability: { screen: Availability },
     Favorites: { screen: Favorites },
     Website: { screen: Linking.openURL('http://www.example.com') },   }

最佳答案

我知道这是不久前提出的,但我最近遇到了这种需求并找到了一个可行的解决方案。
您想先用 createDrawerNavigator 建立抽屉:

import { createDrawerNavigator, DrawerContentScrollView, DrawerItemList, DrawerItem } from '@react-navigation/drawer';
import { Linking } from 'react-native';

const Drawer = createDrawerNavigator();
使用最新版本的 react-native 导航,我们无法像您那样将字段传递给 DrawerNavigator。设置抽屉及其导航内容的一种方法如下:
return (
        <Drawer.Navigator
          initialRouteName="Account"
          drawerPosition="right"
          drawerContentOptions={{
            activeTintColor: 'white',
            inactiveTintColor: 'blue',
            activeBackgroundColor: 'blue',
            labelStyle: {
              fontFamily: 'Arial',
              fontSize: 18,
              textTransform: 'uppercase',
              paddingTop: 5
            }
          }}
          drawerContent={props => <CustomDrawerContent {...props}/>}
        >
          <Drawer.Screen name="Account" component={Account} />
          <Drawer.Screen name="Availability" component={Availability} />
          <Drawer.Screen name="Favorites" component={Favorites} />
          {/* Custom Links (defined next) */}
        </Drawer.Navigator>
      );
我已经包含了我的 return声明以表明这是我在屏幕上呈现的内容。 drawerContentOptions显示您可以传递给抽屉的参数之一。所有选项都在这里定义:
https://reactnavigation.org/docs/drawer-navigator/
接下来,我们要创建我们在 Drawer.Navigator 之一中引用的自定义抽屉内容。 Prop 。您还可以像我们之前对抽屉导航项所做的那样应用非常相似的 Prop 。请记住,所有自定义链接都将显示在 Drawer.Screen 下方。之前引用/定义的组件。这是由于行 DrawerItemList {...props}>它接受定义的导航链接列表并将它们显示在我们的自定义链接之前。您可以先反转此自定义显示,但我不确定您是否可以将自定义链接放在中间。
// set up custom links for main navigation drawer
  function CustomDrawerContent(props) {
    return (
      <DrawerContentScrollView {...props}>
        <DrawerItemList {...props} />
        <DrawerItem
          label="Website"
          inactiveTintColor={'blue'}
          labelStyle= {{
            fontFamily: 'Arial',
            fontSize: 18,
            textTransform: 'uppercase',
            paddingTop: 5
          }}
          onPress={() => Linking.openURL('http://www.example.com')}
        />
      </DrawerContentScrollView>
    );
  }

关于javascript - 使用 DrawerNavigator [React native] 导航到 URL/Deep Link,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47351444/

相关文章:

javascript - 使用 Web Audio API 在声音开始时添加静音

javascript - React Native ListView 数据源始终为 null

javascript - 在 React Native 中将照片上传到 Node 服务器

javascript - 仅显示最接近的列表元素

xcode - Swift 2 - 如何将导航 Controller 后退按钮自定义为自定义按钮?

javascript - 仅在管理页面上显示左侧导航

javascript - 何时不使用 promise

javascript - 如何正确设置组件的状态而不在每次重新渲染时都将其删除?

javascript - Firefox Addon MySql 连接

javascript - 如何减少react-redux样板文件 - 我尝试创建一个ComponentFactory,但遇到了react-redux错误