标签: react-navigation

如何在反应导航抽屉内添加按钮(在现有按钮之间)

要添加一个额外的抽屉按钮,该按钮不链接到按钮上方或下方的路径,DrawerItemList就像执行以下操作一样简单:

  <Drawer.Navigator initialRouteName="Home" drawerContent={props => {
    return (
      <DrawerContentScrollView {...props}>
        <DrawerItemList {...props} />
        <DrawerItem label="Logout" onPress={() => props.navigation.navigate("Login")} />
      </DrawerContentScrollView>
    )
  }}>
    <Drawer.Screen name="Home" component={Home}/>
    <Drawer.Screen name="About" component={About} />
  </Drawer.Navigator>
Run Code Online (Sandbox Code Playgroud)

但现在我需要在和按钮之间添加一个自定义按钮(如“注销”按钮,其自定义按钮onPress不仅会转到某个路线,还会导航到“主页”调用几个功能)。HomeAbout

所以我关于抽屉上按钮的最终按钮结果应该是:

- 家

- 风俗

- 关于

- 登出

我需要以某种方式分手DrawerItemList,但不知道如何分手。

我有什么想法可以实现这一目标吗?

小吃都可以在这里找到

(使用反应导航> v5)

reactjs react-native react-navigation

4
推荐指数
1
解决办法
2031
查看次数

React 导航 5 非常慢并且在 Expo 上下降了 JS FPS

我目前正在开发 React Native (Expo) 应用程序,并且面临一些性能问题。我还没有找到我的问题的任何答案,所以我希望有人可以帮助我。

我的问题是,每当我在物理设备 (Galaxy S9+) 上启动应用程序并导航到不同的屏幕时,我都会注意到 JS 帧从 60 一路下降到 10-30 左右。我有一个主抽屉导航器、一​​个底部选项卡导航器和一些堆栈导航器。我有基本的视图,文本,...组件,所以我不认为这是由于重型组件。(我正在使用react-navigation v5

我还必须提到的是,我在 iOS 模拟器上并没有真正看到任何性能不足或 JS FPS 下降的情况。

javascript android react-native react-navigation expo

4
推荐指数
1
解决办法
6532
查看次数

React Navigation onPress 函数在自己的 tabBarButton 中?

我是初学者,我需要为 tabBarButton 制作组件,我成功了。

问题是导航现在不起作用,因为我不知道如何编写 onPress 函数以使其起作用!

有人可以帮我解决这个问题吗?

这是我的组件,我在我的Tab.Navigator

import React from 'react';
import {StyleSheet, TouchableOpacity, View} from 'react-native';
import Text from '../Text/Text';

interface Props {}

const NavBottomButton: React.FC<Props> = (props) => {
  const {children} = props;

  return (
    <TouchableOpacity onPress={() => {}} style={styles.navButton}>
      <View>
        <Text>{children}</Text>
      </View>
    </TouchableOpacity>
  );
};

const styles = StyleSheet.create({
  navButton: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
});

export default NavBottomButton;
Run Code Online (Sandbox Code Playgroud)

这是我使用组件的方式:

<Tab.Navigator
  tabBarOptions={someStyles}>
  <Tab.Screen
    name="Matches"
    component={Matches}
    options={{
      tabBarButton: (props) => (
        <NavBottomButton …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation

4
推荐指数
1
解决办法
6095
查看次数

React Navigation 导航到特定选项卡

React Navigation 上的示例展示了如何跳转到选项卡,但它是在您位于选项卡所属的导航器中的情况下显示的。但是,如何从属于不同导航器的屏幕导航到特定选项卡?

我有:

function MealsNavigator() {
  const MealsStack = createStackNavigator();
  return (
    <MealsStack.Navigator>
      <MealsStack.Screen
        name="Meals"
        component={MealsScreenTabs}
      />
    </MealsStack.Navigator>
  );
}

function MealsScreenTabs() {
  const MealsTabs = createMaterialTopTabNavigator();
  return (
    <MealsTabs.Navigator>
      <MealsTabs.Screen name="Upcoming" component={MealsUpcomingScreen} />
      <MealsTabs.Screen name="Past" component={MealsPastScreen} />
    </MealsTabs.Navigator>
  );
}
Run Code Online (Sandbox Code Playgroud)

我希望能够通过单击帐户导航器内的个人资料屏幕中的按钮导航至“膳食”>“过去”。如何?

reactjs react-native react-navigation

4
推荐指数
2
解决办法
6861
查看次数

关闭嵌套堆栈导航器

在我的反应本机项目中,我正在使用库

"@react-navigation/native": "^5.8.10",
"@react-navigation/stack": "^5.12.8",
Run Code Online (Sandbox Code Playgroud)

我有嵌套的导航器,如下所示:

// root level I have a stack navigator where it contains two screens, `Home` and `Settings`.
const App = ()=> {
  const rootStack = createStackNavigator();
  return (
    <NavigationContainer>
      <rootStack.Navigator>
        <rootStack.Screen name="Home" component={Home} />
        <rootStack.Screen name="Settings" component={Settings} />
      </rootStack.Navigator>
    </NavigationContainer>
  );
}

// The Settings screen is a nested stack navigator
const Settings = ()=> {
  const settingsStack = createStackNavigator();
  return (
    <settingsStack.Navigator>
      <settingsStack.Screen name="SettingsOne" component={SettingsOneScreen} />
      <settingsStack.Screen name="SettingsTwo" component={SettingsTwoScreen} />
    </settingsStack.Navigator>
  );
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,“设置”屏幕实际上是另一个级别(嵌套)堆栈导航器。 …

react-native react-navigation react-navigation-stack react-navigation-v5

4
推荐指数
1
解决办法
2928
查看次数

我应该如何构建深度链接配置对象以与这些导航器一起使用?

给定以下导航器层次结构,构建链接配置对象的正确方法是什么?按照当前的构造,当尝试打开“myapp://bizpage/1”时,出现此错误:

从 URL 解析的导航状态包含根导航器中不存在的路由。这通常意味着链接配置与导航结构不匹配。有关如何指定链接配置的更多详细信息,请参阅https://reactnavigation.org/docs/configuring-links 。

我整个晚上都按照文档攻击谷歌。我不明白我哪里出错了。

有人能指出我正确的方向吗?

function AppNav({navigation}) {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="AuthFlow"
        component={AuthFlow}
      />
      <Stack.Screen
        name="DrawerNav"
        component={DrawerNav}
      />
    </Stack.Navigator>
  );
}
Run Code Online (Sandbox Code Playgroud)
function AuthFlow({navigation}) {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Login"
        component={Login}
      />
      <Stack.Screen
        name="Signup"
        component={Signup}
      />
    </Stack.Navigator>
  );
}
Run Code Online (Sandbox Code Playgroud)
function DrawerNav({navigation}) {
  return (
    <Drawer.Navigator>
      <Drawer.Screen
        name="Home"
        component={Main}
      />
      <Drawer.Screen
        name="Profile"
        component={Profile}
      />
      <Drawer.Screen
        name="Notifications"
        component={NotificationsScreen}
      />
      </Drawer.Navigator>
  );
}
Run Code Online (Sandbox Code Playgroud)
function Main({navigation}) {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="HomeScreen"
        component={HomeScreen}
      />
      <Stack.Screen
        name="BizPage"
        component={BizPage}
      />
      <Stack.Screen
        name="PeerProfile"
        component={PeerProfile} …
Run Code Online (Sandbox Code Playgroud)

deep-linking ios react-native react-navigation

4
推荐指数
1
解决办法
4596
查看次数

检查 `MaterialTopTabNavigator` 的渲染方法

我想创建一个顶部选项卡导航器,并将两个屏幕 Badges.js 和 Studying.js 放入选项卡中,当我在设备上运行它时,我收到一条错误,显示“错误:元素类型无效:需要一个字符串...”并且“检查‘MaterialTopTabNavigator’的渲染方法”

TabScreen.js

import React from 'react';
import {View, Image, Text} from 'react-native';
import {createMaterialTopTabNavigator} from '@react-navigation/material-top-tabs';
import Badges from './Badge';
import Studying from './Studying';

const Tab = createMaterialTopTabNavigator();

const TabsScreen = () => {
  return (
    <Tab.Navigator>
      <Tab.Screen name="Badges" component={Badges} />
      <Tab.Screen name="Studying" component={Studying} />
    </Tab.Navigator>
  );
};
export default TabsScreen;
Run Code Online (Sandbox Code Playgroud)

徽章.js

import React from 'react';
import {View, Image, Text} from 'react-native';

const Badges = () => {
  return (
    <View>
      <Text>Badges</Text> …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation react-navigation-v5 react-navigation-top-tabs

4
推荐指数
1
解决办法
3051
查看次数

传递反应导航的 tabBarOptions 属性时出错

我正在创建一个应用程序并添加了 React 导航,但是当我尝试通过它时,tabBarOptions它显示以下错误:

No overload matches this call.
  Overload 1 of 2, '(props: Omit<DefaultRouterOptions<string> & { children: ReactNode; screenListeners?: Partial<{ tabPress: EventListenerCallback<BottomTabNavigationEventMap, "tabPress">; ... 4 more ...; beforeRemove: EventListenerCallback<...>; }> | ((props: { ...; }) => Partial<...>) | undefined; screenOptions?: BottomTabNavigationOptions | ... 1 more ... | undefined; defaultScreenOptions?: BottomTabNavigationOptions | ... 1 more ... | undefined; } & { ...; } & BottomTabNavigationConfig, "initialRouteName" | ... 3 more ... | "defaultScreenOptions"> & DefaultRouterOptions<...> & { ...; }, …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-native react-navigation

4
推荐指数
1
解决办法
1万
查看次数

如何在类组件中使用React Navigation useNavigation Hook?

我是反应原生的初学者。如何useNavigation在 React 类组件中使用钩子?

react-native react-navigation

4
推荐指数
1
解决办法
8092
查看次数

反应导航我需要NativeComponent:“RNSScreenStackHeaderConfig”

我刚刚开始我的新项目。在我的 IOS 应用程序中安装react-navigation并使用它后,我收到一个错误Invariant Violation: requireNativeComponent: "RNSScreenStackHeaderConfig" was not found in the UIManager.。我无法找出问题所在。

这是我的导航代码

import React from 'react';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import strings from '../Constants/Strings';
import {Home} from '../Screens';

const Stack = createNativeStackNavigator();

export default MainStack = () => {
  return (
    <Stack.Navigator>
      <Stack.Screen name={strings.navHome} component={Home} />
    </Stack.Navigator>
  );
};
Run Code Online (Sandbox Code Playgroud)
import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import MainStack from './MainStack';

const Routes = () => {
  return (
    <NavigationContainer>
      <MainStack />
    </NavigationContainer>
  );
}; …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-navigation

4
推荐指数
1
解决办法
6332
查看次数