使用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()不是变成了一个对象嘛。
src/screens/index.js
文件下,有一个叫做registerScreens
的函数,这个函数调用了Navigation.registerComponent
, 而Navigation.registerComponent
,会返回一个generationWrapper
,并且会执行AppRegistry.registerComponent
来注册你的screen
组件,所以new App
时,其实是执行了AppRegistry.registerComponent
的。相关源码: registerScreen