Why do mobile app developers use React?

Kom godt i gang med React Native

28/12/2023

Rating: 4.25 (9406 votes)

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.

Is React Native easy to learn?
If you are coming from React and JavaScript Background it is pretty easy to pick up React Native , you do not have to learn Java or Kotlin to build Android Apps and Swift for the iOS apps. Vast library support makes React Native easy to integrate with third party libraries to get the job done.
Indholdsfortegnelse

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-cli

Installation af React Native CLI:

npx @react-native-community/cli@latest

Opsæ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 minApp

Dette 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:

  1. Tilslut din enhed (med USB-debugging aktiveret) eller start en Android-emulator.
  2. Naviger til din projektmappe i terminalen.
  3. 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.

What is React Native & Expo?
In this guide, we’ll walk you through the fundamentals of React Native and Expo, help you set up your development environment, and guide you in creating your first mobile app. React Native, built on the popular React library, enables you to develop native iOS, Android, Windows, MacOS, and web apps from a single codebase.

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:

  1. Naviger til `android`-mappen i din terminal:
    cd android
  2. 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.

Go up