【问题标题】:setRootController error using react-native-navigation in Expo在 Expo 中使用 react-native-navigation 的 setRootController 错误
【发布时间】:2018-03-28 09:53:20
【问题描述】:

我在尝试使用 react-native-navigation 时不断遇到undefined is not an object (evaluating 'RCCManager.setRootController')

我尝试使用 https://github.com/junedomingo/movieapp 效仿,但是当它尝试在 Expo 应用程序中加载项目时遇到了这个问题。

我已将 Expo 生成的 App.js 修改为如下所示:

import HomeScreen from './screens/HomeScreen'

Navigation.registerComponent('screens.HomeScreen', () => HomeScreen)

class App extends React.Component {
  constructor(props) {
    super(props)
    this.startApp()
  }
  startApp() {
    Navigation.startTabBasedApp({
      tabs: [
        {
        label: 'One',
        screen: 'screens.HomeScreen',
        title: 'Screen One'
        },
      ]
    })
  }
}

const app = new App()

这有点简单,但我认为这些是必不可少的部分。我觉得我并没有像 Expo 所期望的那样将事情从 rnn 交给 Expo。

知道如何让 rnn 在 Expo 中运行吗?如果有一个我可以玩的示例 repo,那就太好了。我确信我可以让 rnn 在 Expo 之外工作,所以普通的 rnn 示例可能不会有太大帮助。

【问题讨论】:

  • 我相信 expo 不支持 react-native-navigation。它具有本机依赖项。
  • 我认为你的意思是使用 react-navigation。
  • 事实上,就像@EdgarAroutiounian 所说,要使用 Wix 的 react-native-navigation,您需要修改 android 和 iOS 原生代码。 Edgar 你知道是否有办法在 expo 中生成这样的文件夹而不会失去优势?
  • @JuanCarlosAlpizarChinchilla 看看 ExpoKit:docs.expo.io/versions/latest/guides/expokit.html
  • @bennygenel 我相信你是对的。如果您想将其添加为答案,我会接受:)

标签: react-native expo react-native-navigation


【解决方案1】:

因为 react-native-navigation 有原生依赖,需要你添加自定义原生代码,你不能在包外的 Expo 中使用它。

一种选择是detach您的项目并使用这样的包。这有一个副作用是失去了一些 expo 属性。

另一个选项是(如果您对项目不太深入)使用react-native-cli 创建一个新应用并将您的代码移动到该项目。这具有无法使用 expo api 的副作用。

第三种选择是使用不依赖本机代码的导航包。一些最受欢迎的选项是react-navigationreact-native-router-flux

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 2019-06-25
    • 2019-07-02
    • 1970-01-01
    • 2018-08-24
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多