我正在从反应导航中使用createMaterialTopTabNavigator
,其中我有两个单独的屏幕UpdatesStack
和ShopsStack
,我想从这些屏幕导航到其他屏幕,所以我写成{{ 1}},并显示以下红色屏幕错误。
如果我写的像<Toptab navigation={this.props.navigation} />
,则没有错误,但我无法导航。
所以我该如何解决这个问题并能够导航。
代码
<Toptab />
答案 0 :(得分:4)
我知道已经很晚了,但是只是为那些在搜索引擎上迷迷糊糊的人解答:
为什么不导出默认的TopTab本身。在您的用例中,似乎不需要将TopTab与ParentTheme组件一起包装。您可以设置TopTab导航器本身的样式,并使其像任何其他组件一样呈现。
如果必须包装TopTab,除了导航道具外,还需要可访问TopTab中的路由器。这样,它们都引用相同的路由器。简而言之,添加ParentTheme:
静态路由器= TopTab.router;
查看“自定义导航器”以获取更多信息。 https://reactnavigation.org/docs/en/custom-navigators.html
答案 1 :(得分:2)
如果您使用带有钩子的功能化React组件,则由于它们不是JS类,因此将无法在组件内部声明静态变量。
改为声明路由器变量,如下所示:
const reactComponent = (props) => {
/* your component logic and render here */
}
reactComponent.router = TopTab.router; //equivalent to static variable inside a class
export default reactComponent