Je viens de commencer avec React Native et j'ai créé une application de base avec create-react-native-app
.
J'ai fait une restructuration et créé quelques nouveaux dossiers et renommé App.js en Home.js. J'ai modifié le app.json
pour contenir un point d'entrée faisant référence au nouveau Home.js
fichier. Lorsque je charge l'application, rien ne se passe. Il n'y a pas d'erreur, il reste simplement sur l'écran d'exposition.
.
-components
-screens
-Home
Home.js
-config
-node_modules
-tests
app.json
fichier app.json:
{
"expo": {
"sdkVersion" : "23.0.0",
"entryPoint" : "./screens/Home/Home.js"
}
}
Comment définissez-vous le point d'entrée de l'application?
si vous utilisez Expo, vous devez spécifier le point d'entrée dans votre fichier app.json
comme ceci:
{
"expo": {
"entryPoint": "./src/app/index.js"
}
}
puis, à l'intérieur de ce fichier, vous devez enregistrer l'application avec Expo.registerRootComponent(YOUR_MAIN_APP_COMPONENT)
import Expo from 'expo'
...
class App extends Component {
...
}
export default Expo.registerRootComponent(App);
de cette façon, vous pouvez ajouter votre fichier d'entrée où vous le souhaitez.
Vous devez mettre à jour le app.json
Afin que le entryPoint
soit le nouveau chemin d'accès au App.js
.
{
"expo": {
"entryPoint": "./src/App.js",
...
}
}
Cependant, l'utilisation de Expo.registerRootComponent(App)
provoque l'erreur suivante dans le SDK 32:
undefined is not an object (evaluating '_expo.default.registerRootComponent')
Il peut être fixe en important explicitement registerRootComponent
, plutôt que d'essayer d'y accéder via Expo.registerRootComponent
.
Voici un exemple App.js
.
import { registerRootComponent } from 'expo';
class App extends React.Component {
...
}
export default registerRootComponent(App);
Selon la documentation actuelle de l'Expo, si vous souhaitez un point d'entrée différent de App.js
fichier, vous pouvez mettre à jour le package.json
- ajoutez un champ main
avec le chemin d'accès au point d'entrée souhaité. Ensuite, à l'intérieur du fichier de point d'entrée, vous devrez également enregistrer le composant racine de l'application. Expo le faisait automatiquement, lorsque le point d'entrée n'était pas spécifié et était le App.js
fichier
package.json
{
"main": "my/customEntry.js"
}
entryPointFile.js
import { registerRootComponent } from 'expo';
import MyRootComponent from './MyRoot';
registerRootComponent(MyRootComponent);
Que faire si je veux nommer mon fichier d'application principal autre que App.js? - https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my
J'ai créé un projet par react-native-script. Dans le point d'entrée par défaut de l'application (App.js), vous exportez l'application qui importe à partir de votre entrée.
- node_modules
- App.js
- build
- main.js
Fichier App.js:
import App from './build/main'
export default App
Je préfère également mettre toutes les sources dans un dossier séparé, par exemple src/, et j'ai trouvé une solution différente:
import App from './App';
donc il pointe vers mon * src/App.tsx`Voir un exemple de travail ici https://github.com/fibo/tris3d-app/blob/master/src/expoAppEntry.js