React Native에서 진입점 변경
6868 단어 reactnativeReact
엔트리 포인트 초기 설정
expo-cli로 생성한 React Native 프로젝트(TypeScript)의 디렉토리 구성은 다음과 같습니다.
my-rn-app
├── App.tsx
├── app.json
├── assets
├── babel.config.js
├── node_modules
├── package-lock.json
├── package.json
└── tsconfig.json
진입점 지정
루트 디렉토리에
App.tsx
가 있는 것이 자신적으로 싫었기 때문에, src
디렉토리를 만들어 그 부하로 App.tsx
를 이동시켰습니다.my-rn-app
├── src
│ └── App.tsx
├── app.json
├── assets
├── babel.config.js
├── node_modules
├── package-lock.json
├── package.json
└── tsconfig.json
그런 다음 에뮬레이터에서 다음과 같은 오류가 발생했습니다.
이 에러 내용으로부터, 엔트리 포인트의 설정은
node_module/expo/AppEntry.js
로 행하고 있다고 추측할 수 있었습니다.그럼 엔트리 포인트를 지정하고 있는 개소는 어디입니까?
찾아보면 진입점:
node_module/expo/AppEntry.js
는 package.json
의 name
속성에 지정되었습니다."main": "node_modules/expo/AppEntry.js",
이 부분을
src/App.tsx
로 변경합니다."main": "src/App.tsx",
변경 후 에뮬레이터에서 앱이 정상적으로 실행되는지 확인하면,
오류가 발생했습니다.
분명히 앱을 실행하기 위해 진입 점을 등록해야하는 것 같습니다.
진입점 등록
공식 문서에는 다음과 같은 설명이있었습니다.
App root components should register themselves with AppRegistry.registerComponent, then the native system can load the bundle for the app and then actually run the app when it's ready by invoking AppRegistry.runApplication.
앱의 루트 구성 요소는 AppRegistry.registerComponent에 등록해야 합니다. 네이티브 시스템은 앱 번들을 로드하고 AppRegistry.runApplication을 호출하여 준비가 되면 실제로 앱을 실행할 수 있습니다.
라고 하므로,
src/App.tsx
의 AppRegistry.registerComponent
로 루트 컴퍼넌트를 등록, 하고 싶은 곳입니다만 registerComopnent
static registerComponent(appKey, componentProvider, section?)
첫 번째 인수에는
appKey
라는 것이 필요합니다.조사하면(자),
appKey
는 app.json
로 설정하는 것이라고 하므로, property를 추가합니다.app.json
{
"expo": {
"appKey": <APP_KEY>,
}
}
여기까지 할 수 있으면 남겨두는 것은
src/App.tsx
에 AppRegistry.registerComponent로 루트 컴퍼넌트를 등록하기만 하면 됩니다.src/App.tsx
import React from 'react';
import { StyleSheet, Text, View, AppRegistry } from 'react-native';
import { expo } from './../app.json';
export default function App() {
return (
<View style={styles.container}>
<Text>Open up App.tsx to start working on your app!</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center'
}
});
AppRegistry.registerComponent(expo.appKey, () => App);
에뮬레이터에서 앱을 확인하면 제대로 작동하는 것으로 확인되었습니다.
Reference
이 문제에 관하여(React Native에서 진입점 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shinbey221/items/5b5d0040fe5c76c53ca8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)