当前位置: 首页 > 面试题库 >

不变违规:此导航器缺少导航道具

姬安志
2023-03-14
问题内容

当我尝试启动我的React Native应用程序时,我收到此消息。通常,这种格式可在其他多屏幕导航上使用,但在这种情况下不起作用。

这是错误:

Invariant Violation: The navigation prop is missing for this navigator. In 
react-navigation 3 you must set up your app container directly. More info: 
https://reactnavigation.org/docs/en/app-containers.html

这是我的应用格式:

import React, {Component} from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { createStackNavigator } from 'react-navigation';

import Login from './view/login.js'
import SignUp from './view/signup.js'

const RootStack = createStackNavigator(
  {
    Home: {
      screen: Login
    },
    Signup: {
      screen: SignUp
    }
  },
  {
    initialRouteName: 'Home'
  }

);

export default class App extends React.Component {
  render() {
    return <RootStack />;
  }
}

问题答案:

React Navigation 3.0进行了许多重大更改,包括根导航器所需的显式应用程序容器。

过去,任何导航器都可以充当应用程序顶层的导航容器,因为它们都包裹在“导航容器”中。导航容器(现在称为应用程序容器)是一个高级组件,可维护应用程序的导航状态并处理与外界的交互,以将链接事件转换为导航动作,等等。

在v2及更低版本中,React Navigation中的容器由create * Navigatorhtml" target="_blank">函数自动提供。从v3开始,您需要直接使用容器。在v3中,我们还将createNavigationContainer重命名为createAppContainer。

另外请注意,如果您现在使用的是v4,则导航器已移至单独的存储库。现在,您需要从安装和导入'react-navigation- stack'。例如import { createStackNavigator } from 'react-navigation- stack',下面的解决方案适用于v3。

import {
  createStackNavigator,
  createAppContainer
} from 'react-navigation';
const MainNavigator = createStackNavigator({...});
const App = createAppContainer(MainNavigator);

更全面的代码示例:

import {
      createStackNavigator,
      createAppContainer
    } from 'react-navigation';
import Login from './view/login.js'
import SignUp from './view/signup.js'

const RootStack = createStackNavigator({
    Home: {
      screen: Login
    },
    Signup: {
      screen: SignUp
    }
  });

const App = createAppContainer(RootStack);

export default App;


 类似资料:
  • 导航器(navigator)是显示在主图下方的用来展示所有数据的数据列小图形,它提供对整个图表进行缩放、平移操作。 导航器默认显示的 Highstock 中的第一个数据列,可以使用 series.showInNavigator 来指定指定需要显示在导航器中的数据列 series: [{ showInNavigator: false }, { showInNavigator: tru

  • 我需要一些关于react原生应用程序的社区建议。我是一个全新的人,不理解其中的一些基本区别。 关于反应本地文档创建StackNavigator的示例建议如下:从“反应导航堆栈”导入{createStackNav导航仪}; 我发现很多人使用下面的样式导入{堆栈导航器,Tab导航器}从“反应导航”; 为什么人们使用以上两种不同的风格?哪一个更合适,为什么? react-navigation-stack

  • 当我试图实现React-导航中的导航器时,我遇到了一些奇怪的行为。 当你尝试简单的“hello world”时https://reactnavigation.org/docs/en/hello-react-navigation.html... 我得到这个错误: 不变违反:元素类型无效:预期为字符串(用于内置组件)或类/函数(用于复合组件),但得到了:对象。检查SceneView的渲染方法。 奇怪的

  • 我有一个关于底部导航栏的奇怪问题,虽然我花了大量时间在它上面,但我无法解决。当我以“推荐”的方式(从许多教程中)使用它时,它就是无法导航。 那么,我所说的“推荐”方式是什么意思呢:我有一个单独的acticity,其中有一个名为“MainActivity”的navHostFragment。这个主要活动有一个XML布局文件,我将底部导航栏放在其中。BottomNavigationBar还有一个XML布

  • 了解如何在设计规范 XD 的 UX 流程视图中导航。 UX 流程视图 UX 流程视图提供了设计规范中所有画板的概览。在此视图中,您可以: 如需查看其彼此间的连接方式,请将鼠标悬停在画板上。 使用名称搜索特定画板并进行查看。如果画板在视口内,则它会突出显示。如果不在视口中,则 UX 流程视图窗口将滚动到该画板。 缩放和平移各个画板。当设计规范中的所有画板均显示在视口中后,您便无法再进行平移。 单击画

  • Bootstrap中的导航组件分享了常用的标记和样式,从基本的.nav类到激活和禁用的状态。交换修饰类,可以在各种样式之间切换。 关于易用性 如果你使用导航来制作一个导航栏,请确保向<ul>的逻辑父元素添加了role="navigation"或者给整个导航条包裹一个<nav>元素。不要在<ul>的本身上面添加这个role,因为这将阻止它被使用辅助技术的用户声明为一个真正的列表。 基础导航 通过扩展