28/12/2023
Kom godt i gang med React Native: Din Ultimative Guide
React Native har revolutioneret måden, vi tænker mobilapp-udvikling på. Som et kraftfuldt JavaScript-framework giver det udviklere mulighed for at bygge native iOS- og Android-apps fra en enkelt kodebase. Dette betyder hurtigere udviklingstid, færre ressourcer og en ensartet brugeroplevelse på tværs af platforme. Uanset om du er en erfaren React-udvikler eller en nybegynder inden for mobiludvikling, vil denne guide føre dig gennem processen trin for trin.

Hvad er React Native?
React Native er et open-source framework udviklet af Facebook, der bygger på React-biblioteket. Kernen i React Native er dets evne til at skabe native brugergrænseflader. I modsætning til hybride frameworks, der bruger webviews, renderes React Native-komponenter direkte til native UI-elementer på iOS og Android. Dette resulterer i apps, der føles og yder som ægte native apps.
Nøglefunktioner ved React Native:
- Cross-platform: Del din kodebase mellem iOS og Android, hvilket sparer tid og ressourcer.
- Native komponenter: Brug native UI-elementer for en autentisk brugeroplevelse.
- Effektiv og alsidig: Skab responsive og intuitive apps med høj ydeevne.
- Baseret på React: Udnyt din eksisterende viden om React og JavaScript.
- Understøtter moderne JavaScript: Brug de nyeste ES6+ funktioner som arrow functions og async/await.
Hvorfor vælge React Native til mobiludvikling?
Hvis du har en baggrund i JavaScript og React, er React Native et naturligt næste skridt. Du slipper for at lære sprog som Java/Kotlin for Android eller Swift for iOS fra bunden. Den enorme mængde af tredjepartsbiblioteker og et stort, aktivt community betyder, at du sjældent står alene med et problem. Hjælp er altid inden for rækkevidde, hvilket accelererer din udviklingsproces betydeligt.
Forudsætninger
For at komme godt i gang med React Native, anbefales det at have:
- Grundlæggende kendskab til JavaScript og React.
- Et udviklingsmiljø sat op (Windows, macOS, Linux).
Opsætning af Udviklingsmiljøet
Før du kan begynde at kode, skal dit udviklingsmiljø være klar. Dette involverer installation af Node.js, JDK og React Native CLI eller Expo CLI.
Installation af Node.js og JDK
Download den seneste version af Node.js fra den officielle hjemmeside. Installer også JDK (Java Development Kit) version 17 eller nyere.
React Native CLI vs. Expo CLI
Der er to primære måder at starte et React Native-projekt på:
- React Native CLI: Giver dig fuld kontrol over projektet og kræver manuel konfiguration af native builds.
- Expo CLI: En simplificeret tilgang, der leveres med mange forudkonfigurerede værktøjer og SDK'er. Expo gør det nemmere at komme i gang, især hvis du ikke har erfaring med native udvikling. Med Expo kan du hurtigt teste din app på din fysiske enhed ved at scanne en QR-kode med Expo Go-appen.
Installation af Expo CLI:
npm install --global expo-cliInstallation af React Native CLI:
npx @react-native-community/cli@latestOpsætning af Android Studio (til Android-udvikling)
Download og installer Android Studio. Under den første opsætning skal du sikre dig, at følgende komponenter er markeret til installation:
- Android SDK
- Android SDK Platform
- Android Virtual Device
Miljøvariabler for Android
Det er vigtigt at sætte miljøvariablerne korrekt for at React Native kan finde dine Android-værktøjer. Dette inkluderer:
- JAVA_HOME
- ANDROID_HOME
- ANDROID_SDK_PATH
- ANDROID_EMULATOR_PATH
- ANDROID_PLATFORM_TOOLS_PATH
Disse sættes typisk i din bash-profil (f.eks. `.bashrc` eller `.zshrc` på Linux/macOS) eller systemindstillingerne på Windows.
Oprettelse af dit Første React Native Projekt
Lad os skabe et simpelt projekt med React Native CLI.
Oprettelse af projektet
Åbn din terminal og kør følgende kommando:
npx @react-native-community/cli@latest init minAppDette vil oprette en ny mappe kaldet `minApp` med den grundlæggende projektstruktur.
Projektstruktur
Lad os kigge på de vigtigste mapper og filer:
- `android/`: Indeholder alle native Android-projektelementer, inklusive Gradle-buildfiler og ressourcer.
- `ios/`: Indeholder alle native iOS-projektelementer, inklusive Xcode-projektfiler.
- `App.tsx`: Hovedfilen for din app, hvor din brugergrænseflade defineres.
- `package.json`: Styrer projektets afhængigheder og scripts.
- `index.js`: Appens indgangspunkt.
- `test/`: Indeholder testfiler for projektet.
Kørsel af Projektet
For at køre din app på en emulator eller en fysisk enhed:
- Tilslut din enhed (med USB-debugging aktiveret) eller start en Android-emulator.
- Naviger til din projektmappe i terminalen.
- Kør:
npm start
Dette starter udviklingsserveren, og din app vil blive bygget og installeret på din enhed/emulator.
Grundlæggende Koncepter i React Native
React Native bruger et komponentbaseret system til at bygge brugergrænseflader. Her er nogle af de mest essentielle kernkomponenter:
Kernkomponenter
- `View`: Fungerer som en container, der svarer til `div` i HTML. Bruges til at strukturere layoutet.
- `Text`: Bruges til at vise tekst. Alt tekst skal placeres inden i en
Text-komponent. - `Image`: Bruges til at vise billeder, enten fra lokale filer eller netværket.
- `TextInput`: Et inputfelt til brugerindtastning.
- `Button`: En simpel knapkomponent til interaktion.
Styling i React Native
Styling i React Native minder meget om CSS, men implementeres via JavaScript. Du kan style komponenter på to måder:
- Inline Styling: Direkte styling på komponenten via
style-attributtet. - StyleSheet API: Opret et
StyleSheet-objekt, der indeholder dine stilarter. Dette er den anbefalede metode for bedre ydeevne og organisation.
Eksempel med StyleSheet:
const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#f5f5f5', }, text: { fontSize: 20, fontWeight: 'bold', }, }); // Brug i komponenten: Hej Verden! Flexbox til Responsivt Design
React Native bruger Flexbox til layoutstyring, ligesom i moderne CSS. Dette gør det nemt at skabe responsive designs, der tilpasser sig forskellige skærmstørrelser.
Håndtering af Brugerinput
Brugerinput håndteres typisk ved hjælp af event handlers, ligesom i React. For eksempel kan du bruge onPress på en Button eller onChangeText på en TextInput.

State Management i React Native
Effektiv state management er afgørende for at bygge dynamiske apps. React Native understøtter de samme state management-mekanismer som React.
Brug af `useState` Hook
useState hooket giver dig mulighed for at tilføje lokal state til funktionelle komponenter. Det returnerer et state-variabel og en funktion til at opdatere det.
import React, { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( Du har klikket {count} gange
); } Data- og Komponentkommunikation
Data kan deles mellem komponenter ved hjælp af props (nedad) eller mere avancerede metoder som Context API eller state management-biblioteker som Redux eller Zustand (til større apps). Prop drilling (at sende props gennem mange niveauer) bør undgås.
Arbejde med API'er
De fleste mobilapps skal interagere med backend-tjenester via API'er. React Native understøtter standard JavaScript-API'er til datahentning.
Hentning af data med `fetch` og `axios`
- `fetch`: En indbygget API i browsere og React Native til at lave HTTP-requests.
- `axios`: Et populært tredjepartsbibliotek, der tilbyder en mere brugervenlig og funktionsrig måde at lave HTTP-requests på. Axios håndterer automatisk JSON-konvertering og har bedre fejlhåndtering.
Eksempel med Axios:
import axios from 'axios'; const fetchNews = async () => { try { const response = await axios.get('https://api.example.com/news'); console.log(response.data); } catch (error) { console.error('Fejl ved hentning af nyheder:', error); } }; Bygning af en Simpel Nyheds-App
Lad os nu bygge en simpel app, der henter og viser nyheder fra et API.
Tech Stack
- React Native
- Axios (til API-kald)
- News API (eller et andet nyheds-API)
Homepage Komponent
Vi opretter en Homepage-komponent, der viser en knap til at hente nyheder og viser resultatet.
import React, { useState } from 'react'; import { View, Text, Button, StyleSheet, ActivityIndicator, } from 'react-native'; import axios from 'axios'; const Homepage = () => { const [news, setNews] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const fetchNews = () => { setLoading(true); setError(null); axios .get('https://newsapi.org/v2/top-headlines', { params: { country: 'us', apiKey: 'DIN_API_NØGLE', // Husk at indsætte din egen API-nøgle pageSize: 1, page: Math.floor(Math.random() * 100) + 1, }, }) .then(response => { setNews(response.data.articles[0]); setLoading(false); }) .catch(error => { setError('Kunne ikke hente nyheder'); setLoading(false); }); }; return ( {loading && } {!loading && !news && !error && ( Tryk på knappen for at hente nyheder )} {error && {error} } {news && ( Nyhed: {news.title} Af: {news.author || 'Ukendt'} )} ); }; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20, }, loading: { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0, justifyContent: 'center', alignItems: 'center', }, message: { fontSize: 18, textAlign: 'center', marginBottom: 20, }, error: { fontSize: 18, color: 'red', textAlign: 'center', marginBottom: 20, }, newsContainer: { alignItems: 'center', backgroundColor: '#e0e0e0', padding: 15, borderRadius: 10, marginBottom: 20, width: '90%', }, title: { fontSize: 20, fontWeight: 'bold', textAlign: 'center', marginBottom: 10, }, description: { fontSize: 16, textAlign: 'center', }, dataContainer: { alignItems: 'center', width: '100%', }, }); export default Homepage; App Komponent (App.tsx)
Importer og brug Homepage-komponenten i din hoved-App-fil.
import React from 'react'; import { View, ScrollView, StyleSheet, } from 'react-native'; import Homepage from './Pages/Homepage'; // Antaget at Homepage er i en 'Pages'-mappe const App = () => { return ( ); }; const styles = StyleSheet.create({ scrollContainer: { flexGrow: 1, justifyContent: 'center', alignItems: 'center', }, container: { justifyContent: 'center', alignItems: 'center', marginTop: 50, // Lidt plads fra toppen }, }); export default App; Bygning af APK
For at bygge en release-version af din Android-app:
- Naviger til `android`-mappen i din terminal:
cd android - Kør build-kommandoen:
./gradlew assembleRelease
APK-filen vil blive genereret i `android/app/build/outputs/apk/release/`.
Konklusion
At lære React Native åbner døre til effektiv mobilapp-udvikling. Selvom der kan være udfordringer undervejs, især med opsætning og native integrationer, er processen givende. Ved at følge disse trin og mestre de grundlæggende koncepter, er du godt på vej til at bygge dine egne imponerende mobilapps. Husk, at øvelse gør mester, og det community, der omgiver React Native, er en uvurderlig ressource.
Hvis du har brug for kildekoden eller har yderligere spørgsmål, så tøv ikke med at spørge!
Tak fordi du læste med!
Fortsat god kodning...
Hvis du vil læse andre artikler, der ligner Kom godt i gang med React Native, kan du besøge kategorien Teknologi.
