React native 这是让导航器彼此交互的正确方式吗?I';我犯了一个错误

React native 这是让导航器彼此交互的正确方式吗?I';我犯了一个错误,react-native,React Native,我的React原生Android应用程序出现以下错误 '路线仪表板的组件必须是React组件。例如: 从“/MyScreen”导入MyScreen ... 仪表板:MyScreen 您还可以使用导航器: 从“./MyNavigator”导入MyNavigator ... 仪表板:MyNavigator' 我相信下面的代码就是问题所在。虽然我不知道如何修复它,但我真的非常感谢您的帮助 从“反应导航”导入{createStackNavigator、createAppContainer、createM

我的React原生Android应用程序出现以下错误

'路线仪表板的组件必须是React组件。例如:

从“/MyScreen”导入MyScreen ... 仪表板:MyScreen

您还可以使用导航器:

从“./MyNavigator”导入MyNavigator ... 仪表板:MyNavigator'

我相信下面的代码就是问题所在。虽然我不知道如何修复它,但我真的非常感谢您的帮助

从“反应导航”导入{createStackNavigator、createAppContainer、createMaterialTopTabNavigator、CreateDrainerNavigator};
从“./Login”导入登录名;
从“./Dashboard”导入仪表板
从“./PatientsScreen”导入PatientsScreen
const AppNavigator=createStackNavigator(
{
主页:{屏幕:登录},
仪表板:{screen:DrawerNavigator,screen:DashboardTabNavigator}
},
{
headerMode:“无”
}
);
常数DashboardTabNavigator=CreateMaterialTabNavigator({
病人:病人筛查
})
const pawernavigator=createpawernavigator(
{
仪表板:{屏幕:仪表板}
},{
initialRouteName:“仪表板”
}
)
导出默认createAppContainer(AppNavigator);
这是我试图实现的一个屏幕截图。左上角的汉堡菜单是一个抽屉导航器,病人、设备和录音的标签是我现在正在做的。我正在尝试使用标签导航逻辑来处理这些问题。在我上面发布的代码中,我试图设置从仪表板导航到PatientsScreen的路径


在StackNavigator之前创建TopTabNavigator和DrumerNavigator

您可以检查
仪表板:{screen:DrawerNavigator,screen:DashboardTabNavigator}
,您使用了两次键,因此将只使用DashboardTabNavigator

根据你所说的和你发布的截图,我是这样做的:

  const DashboardTabNavigator = createMaterialTopTabNavigator({
    Patients: PatientsScreen,
    Recordings : RecordingsScreen,
    Devices : DevicesScreen
  })

  const DrawerNavigator = createDrawerNavigator (
    {
        Dashboard: { screen: DashboardTabNavigator }
    },{
        initialRouteName: 'Dashboard'
    }
  )

const AppNavigator = createStackNavigator(
  {
    Home: { screen: Login },
    Dashboard: {screen : DrawerNavigator }
  },
  {
    headerMode: 'none'
  }
);

你能试试下面的代码吗

我添加了模拟录制屏幕,设备屏幕,根据您的需要进行更改

从“反应导航”导入{createStackNavigator、createAppContainer、createMaterialTopTabNavigator、CreateDrainerNavigator};
从“React”导入React,{Component};
从“react native”导入{View,Text};
从“./Login”导入登录名;
从“./Dashboard”导入仪表板
从“./PatientsScreen”导入PatientsScreen
类录制屏幕扩展组件{
render(){
归还录音
}
}
类DeviceScreen扩展组件{
render(){
返回装置
}
}
常数DashboardTabNavigator=CreateMaterialTabNavigator({
患者:患者筛查,
录制:录制屏幕,
设备:设备屏幕
});
const AppStack=createStackNavigator({
仪表板:仪表板选项卡导航器
});
const DrawerNavigator=createStackNavigator(
{
抽屉堆叠:AppStack
},
{
headerMode:“无”
}
);
const AppNavigator=createStackNavigator(
{
主页:登录,
仪表板:抽屉式显示器
},
{
headerMode:“无”,
initialRouteName:“仪表板”
}
);
导出默认createAppContainer(AppNavigator);

您能再解释一下您想要实现的目标吗?任何设计的截图都会很棒!下面的一行导致了仪表板错误:{screen:DrawerNavigator,screen:DashboardTabNavigator}非常感谢。我还有一个问题:当我使用您的代码时,页面上不再阅读以下导入内容,我认为需要这样做。从“./Dashboard”导入仪表板我可以为此做些什么吗?非常感谢。我现在也遇到了这些错误:E | ReactNativeJS▶︎ 需要未知模块“700”。如果您确定模块在那里,请尝试重新启动Metro Bundler。您可能还希望运行
纱线
,或
npm安装
(取决于您的环境)。[13:57:43]E |反应性JS▶︎ 模块AppRegistry不是已注册的可调用模块(调用runApplication)您的仪表板是包含设备、患者和记录屏幕的视图吗?是的,你不需要它。不要忘记使用导出默认createAppContainer(AppNavigator)导出AppNavigator这正是仪表板的功能。好的,我将删除导入。我已经有了导出默认createAppContainer(AppNavigator)的
export在那里,我仍然会收到与上面发布的相同的错误消息。我已经运行了
npm安装
并重新启动了模拟器。我现在真的很迷茫。如果您能提供进一步的见解,我们将不胜感激!尝试重新编译应用程序并重新启动捆绑程序。
import { createStackNavigator, createAppContainer, createMaterialTopTabNavigator, createDrawerNavigator } from "react-navigation";
import React, {Component} from "react";
import {View, Text} from 'react-native';
import Login from './Login';
import Dashboard from './Dashboard'
import PatientsScreen from './PatientsScreen'

class RecordingsScreen extends Component {
  render(){
    return <Text>Recordings</Text>
  }
}

class DevicesScreen extends Component {
  render(){
    return <Text>Devices</Text>
  }
}

const DashboardTabNavigator = createMaterialTopTabNavigator({
  Patients: PatientsScreen,
  Recordings: RecordingsScreen,
  Devices: DevicesScreen
});

const AppStack = createStackNavigator({
  Dashboard: DashboardTabNavigator
});

const DrawerNavigator = createStackNavigator(
  {
    DrawerStack: AppStack
  },
  {
    headerMode: "none"
  }
);

const AppNavigator = createStackNavigator(
  {
    Home: Login,
    Dashboard: DrawerNavigator
  },
  {
    headerMode: 'none',
    initialRouteName: 'Dashboard'
  }
);

export default createAppContainer(AppNavigator);