关于react-native入口文件写法

使用react-native init 一个项目后,它的入口文件是这样写的

import { AppRegistry } from 'react-native';
import App from './App';

AppRegistry.registerComponent('app', () => App);

这样是正常的,也符合我对react的理解。但是今天在一个项目里面看到居然可以这样写:

import App from './src/app';

const app = new App();

app.js里面导出不是react组件,而是一个普通的函数,项目地址

不明白这块为什么可以这样写,new App()不是变成了一个对象嘛。

阅读 4.5k
2 个回答

src/screens/index.js文件下,有一个叫做registerScreens的函数,这个函数调用了Navigation.registerComponent, 而Navigation.registerComponent,会返回一个generationWrapper,并且会执行AppRegistry.registerComponent来注册你的screen组件,所以new App时,其实是执行了AppRegistry.registerComponent的。

相关源码: registerScreen

建议翻翻历史版本,应该是rn同样支持这种函数式的调用的
startApp这个钩子函数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题