Expo
Expo is een tool die het ontwikkelen van React Native apps makkelijker maakt. Het is een bundel van tools die je kan gebruiken om je app te testen op je smartphone of tablet. Je kan ook een app bouwen zonder Expo, maar dan moet je de app eerst bundelen en dan op je smartphone installeren. Dat is een stuk moeilijker.
Expo CLI
Expo CLI is een command line interface die je kan gebruiken om een nieuwe React Native app aan te maken.
Hoe Expo CLI gebruiken
Je kan de Expo CLI gebruiken zonder het eerst te installeren. Je kan het gewoon gebruiken met npx
. Zo heb je ook altijd de laatste versie.
Je kan zien welke commando's je kan gebruiken met npx expo --help
.
Het wordt aangeraden om eerst een Expo account aan te maken. Je kan zien of je al een account hebt door het volgende commando uit te voeren:
npx expo whoami
Als je nog geen account hebt, kan je er een aanmaken met het volgende commando:
npx expo register
Als je een account hebt, kan je inloggen met het volgende commando:
npx expo login
Expo Go App voor iOS en Android
Om je app te testen op je smartphone of tablet, moet je de Expo Go app installeren. Deze app kan je vinden in de App Store en de Play Store.
Android Play Store - Android Lollipop (5) and greater iOS App Store - iOS 11 and greater
Na de installatie kan je via de app met dezelfde account inloggen. Als je ingelogd bent is het veel eenvoudiger om projecten te openen. Ze zullen automatisch onder het "Projects" onderdeel staan.
Nieuwe app aanmaken
Om een nieuwe app aan te maken, kan je het volgende commando gebruiken:
npx create-expo-app <project-name> --template expo-template-blank-typescript
of korter:
npx create-expo-app -t expo-template-blank-typescript <project-name>
Omdat we typescript gaan gebruiken in deze cursus, gebruiken we het --template
argument. Als je geen typescript wil gebruiken, kan je het argument weglaten.
Development server
Je kan de development server starten met het volgende commando:
npx expo start
Als je dit commando uitvoert dan wordt de Metro bundler gestart. Deze bundler is een http server die de javascript code compileert en bundelt. De bundler is ook verantwoordelijk voor het hot reloading. Als je een bestand aanpast, dan zal de bundler de code opnieuw compileren en de app opnieuw laden.
De app openen op je telefoon of tablet
Om de app te openen:
- Op android devices druk je op de "Scan QR Code" knop en scan je de QR code die in de terminal verschijnt.
- Op een iPhone of iPad moet je de default camera app gebruiken om de QR code te scannen. Als je de QR code scant, dan zal de Expo Go app automatisch geopend worden.
Zorg ervoor dat je op hetzelfde netwerk zit als je telefoon of tablet. Als je op een ander netwerk zit, dan zal de bundler niet kunnen verbinden met je telefoon of tablet. Gebruik desnoods een hotspot van je telefoon.
Expo gebruiken via een tunnel
Op sommige netwerken kan het zijn dat je geen verbinding kan maken met je telefoon of tablet. In dat geval kan je een tunnel gebruiken. Je kan dit doen met het volgende commando:
npx expo start --tunnel
De bundler zal nu een tunnel opzetten en een url genereren. Je kan deze url gebruiken om je app te openen op je smartphone of tablet.
Het kan zijn dat je nog een extra dependency moet installeren. Je kan dit doen met het volgende commando:
npm install --save-dev @expo/ngrok@^4.1.1
npm install --global @expo/ngrok@^4.1.1
Ook kan het gebeuren dat het npx create-expo-app
command niet de nieuwste versie van expo installeert. De volgende commando's verhelpen dit probleem:
npm install expo@latest
npx expo install --fix
In het bestand babel.config.json
moet je dan vervolgens de plugin expo-router/babel
verwijderen.
De app openen in de browser
Als je de app in de browser wil openen, dan kan je het volgende commando gebruiken:
npx expo start --web
of je kan de w toets indrukken in de terminal als je opgestart bent met npx expo start
.
Het kan zijn dat je de volgende foutmelding krijgt:
CommandError: It looks like you're trying to use web support but don't have the required
dependencies installed.
Please install react-native-web@~0.19.10, react-dom@18.2.0,
@expo/metro-runtime@~3.2.3 by running:
npx expo install react-native-web react-dom @expo/metro-runtime
If you're not using web, please ensure you remove the "web" string from the platforms
array in the project Expo config.
Zoals de instructies zeggen moet je zelf deze dependencies installeren. Als je daarna opnieuw npx expo start --web
uitvoert, dan zou het moeten werken.
Eerste wijziging aanbrengen
Open de App.tsx
file in de src
folder. Verander de tekst in de Text
component naar "Hello World". Als je de app nu opnieuw laadt, dan zal je de tekst zien veranderen.
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import Constants from 'expo-constants';
const App = () => {
return (
<View style={styles.container}>
<Text style={styles.paragraph}>
Change this code
</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
padding: 8,
},
paragraph: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
});
export default App;