首页 > 解决方案 > createSwitchNavigator - TypeError:无法将类作为函数调用

问题描述

尝试插入时收到此错误createSwitchNavigator()消息createAppContainer()

TypeError: Cannot call a class as a function

我的代码 - router.js

export const RootNavigator = (signedIn = false) => {
  return createSwitchNavigator(
    {
      SignedIn: {
        screen: SignedIn
      },
      SignedOut: {
        screen: SignedOut
      }
    },
    {
      initialRouteName: signedIn ? "SignedIn" : "SignedOut"
    }
  );
};

export const createRootNavigator = createAppContainer(RootNavigator());

index.js

import { createRootNavigator } from "./router";

/**/

const Layout = createRootNavigator(signedIn);

参考:https ://github.com/datomnurdin/auth-reactnative

标签: javascriptreactjsreact-native

解决方案


您正在尝试返回一个函数createAppContainer但它需要一个实例create*Navigator

要么将其用作

export const RootNavigator = createSwitchNavigator(
    {
      SignedIn: {
        screen: SignedIn
      },
      SignedOut: {
        screen: SignedOut
      }
    },
    {
      initialRouteName: signedIn ? "SignedIn" : "SignedOut"
    }
  )

或者

export const createRootNavigator = createAppContainer(RootNavigator());

编辑

createRootNavigator作为方法调用

export function createRootNavigator (signedIn) {
  return createAppContainer(RootNavigator(signedIn));
}

index.js

const Layout = createRootNavigator(signedIn);

推荐阅读